-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmake.js
103 lines (73 loc) · 2.09 KB
/
make.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env node
/*global ls, target, find, echo, cat, exit, exec, mkdir, test */
"use strict";
require("shelljs/make");
var OPTIONS = JSON.parse(cat("./jshint.json"));
function createExec(filename, contents) {
var fullPathToFile = "./bin/" + filename;
contents.join("\n").to(fullPathToFile);
exec("chmod +x " + fullPathToFile);
echo("node - " + filename);
}
target.lint = function () {
var jshint = require("jshint").JSHINT;
var files = find("formats")
.filter(function (file) {
return file.match(/\.js$/);
});
echo("Linting files...", "\n");
var failures = {};
files.forEach(function (file) {
var passed = jshint(cat(file), OPTIONS);
process.stdout.write(passed ? "." : "F");
if (!passed) {
failures[file] = jshint.data();
}
});
echo("\n");
if (Object.keys(failures).length === 0) {
echo("All files passed.");
return;
}
var outputError = function (err) {
if (!err) {
return;
}
var line = "[L" + err.line + "]";
while (line.length < 10) {
line += " ";
}
echo(line, err.reason);
echo("\n");
};
for (var key in failures) {
echo(key);
failures[key].errors.forEach(outputError);
}
exit(1);
};
target.build = function () {
if (exec('npm install').code !== 0) {
echo('Error: npm install failed');
exit(1);
}
var browserify = require("browserify");
var bundle = browserify({ debug: true });
bundle.addEntry("./node_modules/esprima/esprima.js");
if (!test("-e", "./bin")) {
mkdir("./bin");
}
echo("Building into bin/...", "\n");
bundle.append("esprima = require('/esprima.js');");
var log = cat("./src/log.js");
var esprima = [ "var esprima;",
bundle.bundle()
].join("\n");
var esvalidate = [log, esprima, cat("./esvalidate.js")].join("\n");
var node = cat("./src/environs/node.js");
createExec("esvalidate", [node, esvalidate]);
var rhino = cat("./src/environs/rhino.js");
createExec("rhino-esvalidate", [rhino, esvalidate]);
var phantom = cat("./src/environs/phantom.js");
createExec("phantom-esvalidate", [phantom, esvalidate]);
};