/
run.js
89 lines (77 loc) 路 1.81 KB
/
run.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
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
87
88
89
var fs = require("fs");
var path = require("path");
var semver = require("semver");
var spawn = require("child_process").spawn;
var recast = require("recast");
var regenerate = require("../main");
function convert(es6File, es5File, callback) {
fs.readFile(es6File, "utf-8", function(err, es6) {
if (err) {
return callback(err);
}
var tabWidth = require("../lib/util").guessTabWidth(es6);
var options = { tabWidth: tabWidth };
var ast = recast.parse(es6, options);
var es5 = recast.print(regenerate.transform(ast), options);
fs.writeFile(es5File, es5, callback);
});
}
function bundle(es5File, browserFile, callback) {
var browserify = require("browserify");
var b = browserify();
b.add(es5File);
b.bundle(function(err, src) {
if (err) {
return callback(err);
}
fs.writeFile(browserFile, src, callback);
});
}
var queue = [];
function enqueue(cmd, args) {
queue.push({
cmd: cmd,
args: args
});
}
function flush() {
var entry = queue.shift();
if (entry) {
var cmd = entry.cmd;
if (typeof cmd === "function") {
cmd.apply(null, entry.args.concat(asyncCallback));
} else {
spawn(cmd, entry.args, {
stdio: "inherit"
}).on("exit", asyncCallback);
}
}
}
function asyncCallback(err) {
if (err) {
console.error("process exited abnormally:", err);
process.exit(typeof err === "number" ? err : -1);
} else {
process.nextTick(flush);
}
}
enqueue(convert, [
"test/tests.es6.js",
"test/tests.es5.js"
]);
if (semver.gte(process.version, "0.11.0")) {
enqueue("mocha", [
"--harmony-generators",
"--reporter", "spec",
"test/tests.es6.js"
]);
}
enqueue("mocha", [
"--reporter", "spec",
"test/tests.es5.js"
]);
enqueue(bundle, [
"./test/tests.es5.js",
"test/tests.browser.js"
]);
flush();