UNPKG

vivid-builder

Version:

Simple JavaScript packages builder

68 lines (56 loc) 2.34 kB
// 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); } }); } }); }