-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
42 lines (34 loc) · 888 Bytes
/
index.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
var path = require('path');
var EngineTest = require('./lib/engine-test');
module.exports = function checkEngines(json, callback) {
if (!callback) {
callback = json;
json = require(path.resolve(process.cwd(), 'package.json'));
}
var versions = json.engines;
var types = Object.keys(versions || {});
var errors = [];
var count = types.length;
var info = {};
var type;
function done(err, constraints) {
if (err) {
errors.push(err);
}
if (constraints) {
info[constraints[0]] = [constraints[1], constraints[2]];
}
if (--count) {
return;
}
if (errors.length > 0) {
return callback(new Error(errors.join('\n')), info);
}
callback(null, info);
}
for (var i = 0, len = types.length; i < len; i++) {
type = types[i];
test = new EngineTest(type);
test.check(versions[type], done);
}
};