giles
Version:
a next-gen language watcher/compiler for pre-processed languages
74 lines (61 loc) • 2.19 kB
JavaScript
var commander = require('commander');
var giles = require('../giles');
var log = require('../log')
var pathfs = require('path');
var fs = require('fs');
commander.
usage('[directory] [options]').
// option('-o, --output-dir <dir>', 'The output directory').
option('-i, --ignore <dir-list>', 'A comma delimited list of directories to ignore').
// option('-j, --json <json-config-file>','The json file which defines local variables for templates').
option('-e, --environment <dev|prod>', 'Sets the environment variable "development" or "production" to use in generated files (deprecated: use NODE_ENV environment variable).').
option('-s, --server', 'Start a server to serve your compiled jade/coffeescript/etc files - on port 3999').
option('-c, --clean', 'Clean up all the generated files').
option('-v, --versionOut', 'Outputs version number').
option('-p, --port <port>', 'Port to run with giles -s.').
option('-q, --quiet', 'No output mode');
commander.parse(process.argv);
var args = commander.args;
var cwd = process.cwd();
if(commander.versionOut) {
var package = JSON.parse(fs.readFileSync(__dirname+'/../package.json'));
console.log(package.version);
return;
}
if(commander.quiet) {
giles.quiet();
log.quiet();
}
if(args.length === 0) {
log.notice("No path specified. That's quite alright, I'll use the current path: "+cwd);
args = [cwd];
}
args.forEach(function(dir) {
dir = pathfs.resolve(cwd, dir);
var opts = {};
if(commander.port) {
opts.port = commander.port;
}
if(commander.ignore) {
var args = commander.ignore.split(',');
var map = [], i=0, len=args.length;
for(i=0;i<len;++i) {
map.push(new RegExp(args[i]));
}
log.log('ignoring ' + map);
giles.ignore(map);
}
environment = process.env.NODE_ENV || commander.environment;
log.info("Environment set to "+commander.environment);
giles.locals['environment']=commander.environment;
giles.locals[commander.environment]=true;
giles.locals.cwd = dir;
if(commander.server) {
giles.server(dir, opts);
} else if(commander.clean) {
giles.clean(dir, opts);
} else {
giles.build(dir, opts);
}
});