-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
valiquire.js
47 lines (40 loc) · 1.29 KB
/
valiquire.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
'use strict';
var readdirp = require('readdirp')
, map = require('map-stream')
, fs = require('fs')
, validateRequires = require('./validate-requires')
, colors = require('ansicolors')
, directoryFilter = [ '!node_modules', '!.git', '!.svn' ];
module.exports = function (root, redirect, cb) {
if (!cb) {
cb = redirect;
redirect = null;
}
function readFile(entry, cb) {
fs.readFile(entry.fullPath, 'utf-8', function (err, res) {
if (err) return console.error(err);
cb(null, { fullPath: entry.fullPath, src: res });
});
}
function validate(opts, cb) {
validateRequires(opts.fullPath, opts.src, { redirect: redirect }, function (errors) {
cb(null, errors);
});
}
var errors = []
, notOk = colors.red('\u2639 ')
, ok = colors.brightGreen('\u00b7');
readdirp({ root: root, fileFilter: '*.js', directoryFilter: directoryFilter })
.on('error', function (err) {
cb(new Error('When reading ' + root + ':\n' + err.message));
})
.pipe(map(readFile))
.pipe(map(validate))
.on('data', function (data) {
process.stdout.write(data.length ? notOk : ok);
errors = errors.concat(data);
})
.on('end', function () {
cb(null, errors);
});
};