vivid-builder
Version:
Simple JavaScript packages builder
68 lines (56 loc) • 2.34 kB
JavaScript
// Generated by CoffeeScript 1.3.3
var Template, colors, fs, idx, path, pkg, program, template, templates, uglify, util, _i, _len;
pkg = require('../package');
path = require('path');
util = require('util');
fs = require('fs');
program = require('commander');
colors = require('colors');
Template = require('./template');
program.version(pkg.version).usage('[options] <file ...>').option('-o, --out [dir]', 'Output directory').option('-u, --uglify', 'Compress with ugilfy.js', true).option('-v, --verbose', 'Display building messages', true).option('-d, --deprecated', 'Use deprecated inclusion syntax', false).option('-i, --include-function <function>', 'Including function name', 'include').parse(process.argv);
templates = program.args;
uglify = function(code) {
var ast, jsp, pro;
jsp = require("uglify-js").parser;
pro = require("uglify-js").uglify;
ast = jsp.parse(code);
ast = pro.ast_mangle(ast);
ast = pro.ast_squeeze(ast);
return pro.gen_code(ast);
};
for (idx = _i = 0, _len = templates.length; _i < _len; idx = ++_i) {
template = templates[idx];
fs.realpath(template, function(err, resolvedPath) {
var tpl;
if (err) {
console.error("[building: error]".red + (" no such file " + template));
return process.exit(1);
} else {
tpl = new Template(resolvedPath, program.includeFunction, program.deprecated);
return tpl.on('compiled', function() {
var output;
output = program.uglify ? uglify(tpl.output) : tpl.output;
if (program.out != null) {
return fs.realpath(program.out, function(err, out) {
var save;
if (err) {
console.error("[building: error]".red + (" no such file or directory " + out));
process.exit(1);
}
save = path.join(out, path.basename(resolvedPath));
return fs.writeFile(save, output, function(err) {
if (err) {
console.error("[building: error]".red + (" can't " + save + " file " + template));
return process.exit(1);
} else if (program.verbose) {
return console.log("[building: success]".green + (" " + template));
}
});
});
} else {
return util.print(output);
}
});
}
});
}