forked from FGRibreau/check-build
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheck-build.js
More file actions
executable file
·86 lines (69 loc) · 2.01 KB
/
check-build.js
File metadata and controls
executable file
·86 lines (69 loc) · 2.01 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env node
'use strict';
var JSON5 = require('json5');
var p = require('path');
var shjs = require("shelljs");
var async = require("async");
var checkbuildContent, checkbuildOptions;
var checkbuildFile = [
p.resolve(process.cwd(), './.checkbuild'),
p.resolve(__dirname, './defaults/.checkbuild')
].filter(shjs.test.bind(shjs, '-e'))[0];
if (!checkbuildFile) {
console.error('`.checkbuild` is not present inside project root nor inside default folder.');
process.exit(1);
}
try {
checkbuildContent = shjs.cat(checkbuildFile);
} catch (err) {
console.error('Could not open `%s`', checkbuildFile, err);
}
if (!checkbuildContent) {
console.log('Using default `.checkbuild`');
checkbuildContent = shjs.cat(p.resolve(__dirname, './examples/.checkbuild'));
}
try {
checkbuildOptions = JSON5.parse(checkbuildContent);
} catch (err) {
console.error('Invalid json content inside `.checkbuild`');
console.error(err);
process.exit(1);
}
async.reduce(
checkbuildOptions.checkbuild.enable,
0,
function (errors, name, f) {
var module;
// require module interface
try {
module = require('./src/interface/' + name);
} catch (err) {
console.error('Checkbuild module interface for "%s" was not found', name);
console.error(err);
}
// execute module interface
console.log('[%s]', name);
module(checkbuildOptions[name], function (err) {
if (err) {
console.error();
console.error('Checkbuild module "%s" failed.', name);
console.error();
console.error(err);
if (!checkbuildOptions.checkbuild.continueOnError) {
return process.exit(1);
}
errors++;
}
console.log();
f(null, errors);
}, checkbuildOptions);
},
function done(__, errors) {
if (errors > 0 && !checkbuildOptions.checkbuild.allowFailures) {
console.error();
console.error('%s module(s) failed, exiting.', errors);
return process.exit(1);
}
console.log('Done !');
process.exit(0);
});