-
Notifications
You must be signed in to change notification settings - Fork 534
/
index.js
56 lines (51 loc) · 1.26 KB
/
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
module.exports = test;
var Promise = require('es6-promise').Promise; // jshint ignore:line
var detect = require('../detect');
var apiTokenExists = require('../../lib/api-token').exists;
function test(root, options, callback) {
if (typeof options === 'function') {
callback = options;
options = {};
}
if (!options) {
options = {};
}
var promise = apiTokenExists('snyk test').then(function () {
return executeTest(root, options);
});
if (callback) {
promise.then(function (res) {
callback(null, res);
}).catch(callback);
}
return promise;
}
function executeTest(root, options) {
try {
var packageManager = detect.detectPackageManager(root, options);
var runner = loadTestRunner(packageManager);
return runner(root, options)
.then(function (res) {
res.packageManager = packageManager;
return res;
});
} catch (error) {
return Promise.reject(error);
}
}
function loadTestRunner(packageManager) {
switch (packageManager) {
case 'npm': {
return require('./npm');
}
case 'rubygems': {
return require('./rubygems');
}
case 'maven': {
return require('./maven');
}
default: {
throw new Error('Unsupported package manager: ' + packageManager);
}
}
}