Add colored console output
This commit is contained in:
parent
1e3d236aed
commit
ff5757d187
|
|
@ -7,6 +7,7 @@ var UglifyJS = require("../tools/node");
|
||||||
var sys = require("util");
|
var sys = require("util");
|
||||||
var yargs = require("yargs");
|
var yargs = require("yargs");
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
|
var colors = require("colors");
|
||||||
|
|
||||||
var ARGS = yargs
|
var ARGS = yargs
|
||||||
.usage("$0 input1.js \n")
|
.usage("$0 input1.js \n")
|
||||||
|
|
@ -37,23 +38,23 @@ if (ARGS.h || ARGS.help) {
|
||||||
var files = ARGS._.slice();
|
var files = ARGS._.slice();
|
||||||
if (files.length > 1) {
|
if (files.length > 1) {
|
||||||
sys.error("WARNING: expected only single input file. Processing file '" + files[0] + "' while the rest is ignored.");
|
sys.error("WARNING: expected only single input file. Processing file '" + files[0] + "' while the rest is ignored.");
|
||||||
};
|
}
|
||||||
|
|
||||||
if (ARGS.features === true) {
|
if (ARGS.features === true) {
|
||||||
sys.error("ERROR: empty set of features.");
|
sys.error("ERROR: empty set of features.");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
};
|
}
|
||||||
|
|
||||||
var features = ARGS.features.split(",");
|
var features = ARGS.features.split(",");
|
||||||
for (var i = 0; i < features.length; i++) {
|
for (var i = 0; i < features.length; i++) {
|
||||||
if (features[i] != "FNAMES" && features[i] != "ASTREL" && features[i] != "FSCOPE") {
|
if (features[i] != "FNAMES" && features[i] != "ASTREL" && features[i] != "FSCOPE") {
|
||||||
sys.error("WARNING: ignoring not supported feature '" + features[i] + "'.");
|
sys.error("WARNING: ignoring not supported feature '" + features[i] + "'.");
|
||||||
};
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < files.length; i++) {
|
||||||
processFile(files[i], ARGS.print_ast, ARGS.features, ARGS.json_formatting, ARGS.skip_minified);
|
processFile(files[i], ARGS.print_ast, ARGS.features, ARGS.json_formatting, ARGS.skip_minified);
|
||||||
};
|
}
|
||||||
|
|
||||||
function stripInterpreter(code){
|
function stripInterpreter(code){
|
||||||
if (code.slice(0,2) != "#!"){
|
if (code.slice(0,2) != "#!"){
|
||||||
|
|
@ -69,14 +70,27 @@ function processFile(file, print_ast, features, json_formatting, skip_minified)
|
||||||
code = fs.readFileSync(file, "utf-8");
|
code = fs.readFileSync(file, "utf-8");
|
||||||
}
|
}
|
||||||
catch (ex) {
|
catch (ex) {
|
||||||
sys.error("ERROR: can't read file: " + file);
|
sys.error("ERROR:".red + " can't read file '" + file + "'");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if it is a script, the UglifyJS parser will fail to parse it
|
//if it is a script, the UglifyJS parser will fail to parse it
|
||||||
code = stripInterpreter(code);
|
code = stripInterpreter(code);
|
||||||
|
|
||||||
var output = UglifyJS.extractFeatures(code, file, print_ast, features, skip_minified);
|
try {
|
||||||
|
var output = UglifyJS.extractFeatures(code, file, print_ast, features, skip_minified);
|
||||||
|
} catch (ex){
|
||||||
|
if (ex instanceof UglifyJS.JS_Parse_Error){
|
||||||
|
sys.error("ERROR: ".red + "cannot parse file '" + file + "'");
|
||||||
|
} else if (ex instanceof UglifyJS.JS_Minified_Error){
|
||||||
|
sys.error("WARN: ".yellow + "skipping minified file '" + file + "'");
|
||||||
|
} else {
|
||||||
|
sys.error("ERROR: ".red + "'" + file + "'" + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (output == null) {
|
if (output == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -88,13 +102,17 @@ function processFile(file, print_ast, features, json_formatting, skip_minified)
|
||||||
//validate JSON
|
//validate JSON
|
||||||
try {
|
try {
|
||||||
JSON.parse(output);
|
JSON.parse(output);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
sys.error("ERROR: ".red + "output is not valid JSON " + "'" + file + "'");
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (removeWhitespace(output) != '{"query":[],"assign":[]}') {
|
if (removeWhitespace(output) != '{"query":[],"assign":[]}') {
|
||||||
console.log(output);
|
console.log(output);
|
||||||
}
|
sys.error("OK: ".green + "'" + file + "'");
|
||||||
|
} else {
|
||||||
|
sys.error("EMPTY: ".yellow + "'" + file + "'");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,14 +58,14 @@ function replaceMangled(code, file) {
|
||||||
return stream.toString();
|
return stream.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function JS_Minified_Error(message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
function extractFeatures(code, file, print_ast, features, skip_minified) {
|
function extractFeatures(code, file, print_ast, features, skip_minified) {
|
||||||
var toplevel;
|
var toplevel;
|
||||||
try {
|
|
||||||
toplevel = parseFile(code, file);
|
toplevel = parseFile(code, file);
|
||||||
} catch (e) {
|
|
||||||
console.warn("Cannot parse file: '%s'", file);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
extendAst(toplevel);
|
extendAst(toplevel);
|
||||||
|
|
||||||
|
|
@ -74,8 +74,9 @@ function extractFeatures(code, file, print_ast, features, skip_minified) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skip_minified && isMinified(toplevel, code, file)){
|
if (skip_minified && isMinified(toplevel, code, file)){
|
||||||
console.warn("Skipping minified file: '%s'", file);
|
throw new JS_Minified_Error("Skipping minified file");
|
||||||
return null;
|
//console.warn("Skipping minified file: '%s'", file);
|
||||||
|
//return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var feature_outputter = new FeatureJsonOutputter();
|
var feature_outputter = new FeatureJsonOutputter();
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@
|
||||||
"acorn": "~0.6.0",
|
"acorn": "~0.6.0",
|
||||||
"escodegen": "~1.3.3",
|
"escodegen": "~1.3.3",
|
||||||
"esfuzz": "~0.3.1",
|
"esfuzz": "~0.3.1",
|
||||||
"estraverse": "~1.5.1"
|
"estraverse": "~1.5.1",
|
||||||
|
"colors": "~1.0.3"
|
||||||
},
|
},
|
||||||
"browserify": {
|
"browserify": {
|
||||||
"transform": [ "uglify-to-browserify" ]
|
"transform": [ "uglify-to-browserify" ]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user