mano
Version:
Web application framework
39 lines (35 loc) • 1.24 kB
JavaScript
;
var includes = require('es5-ext/string/#/contains')
, readdir = require('fs2/readdir')
, readFile = require('fs2/read-file')
, resolve = require('path').resolve;
require('fs2/lib/ignore-modes').lint = require('xlint/lib/lintignore-mode');
module.exports = function (root/*, options*/) {
var processes = [], options = Object(arguments[1]), log = options.log || Function.prototype
, preBroken = false, total = 0, broken = 0, result = [];
log("Search started ");
var promise = readdir(root, { pattern: /\.(?:css|html|index|md|txt)$/,
ignoreRules: ['git', 'lint'], depth: Infinity, type: { file: true }, stream: true });
promise.on('change', function (event) {
event.added.forEach(function (filename) {
++total;
filename = resolve(root, filename);
processes.push(readFile(filename)(function (content) {
content = String(content);
if (!includes.call(content, '\r')) {
preBroken = false;
log('.');
return;
}
++broken;
result.push(filename);
if (!preBroken) log('\n');
preBroken = true;
log("Broken: " + filename + "\n");
}));
});
});
return promise(result).aside(function () {
log(" Done [" + broken + " of " + total + " got bad eol]\n");
});
};