wintersmith
Version:
A flexible static site generator.
72 lines (61 loc) • 2.22 kB
JavaScript
(function() {
var chalk, extendOptions, globalOptions, logger, main, parseArgv, path, usage,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
chalk = require('chalk');
parseArgv = require('minimist');
path = require('path');
logger = require('./../core/logger').logger;
extendOptions = require('./common').extendOptions;
usage = "\nusage: wintersmith [options] [command]\n\ncommands:\n\n " + (chalk.bold('build')) + " [options] - build a site\n " + (chalk.bold('preview')) + " [options] - run local webserver\n " + (chalk.bold('new')) + " <location> - create a new site\n " + (chalk.bold('plugin')) + " - manage plugins\n\n also see [command] --help\n\nglobal options:\n\n -v, --verbose show debug information\n -q, --quiet only output critical errors\n -V, --version output version and exit\n -h, --help show help\n";
globalOptions = {
boolean: ['verbose', 'quiet', 'version', 'help'],
alias: {
verbose: 'v',
quiet: 'q',
version: 'V',
help: 'h'
}
};
main = function(argv) {
var cmd, error, opts;
opts = parseArgv(argv, globalOptions);
cmd = opts._[2];
if (cmd != null) {
try {
cmd = require("./" + cmd);
} catch (error1) {
error = error1;
if (error.code === 'MODULE_NOT_FOUND') {
console.log("'" + cmd + "' - no such command");
process.exit(1);
} else {
throw error;
}
}
}
if (opts.version) {
console.log(require('./version'));
process.exit(0);
}
if (opts.help || !cmd) {
console.log(cmd ? cmd.usage : usage);
process.exit(0);
}
if (opts.verbose) {
if (indexOf.call(argv, '-vv') >= 0) {
logger.transports[0].level = 'silly';
} else {
logger.transports[0].level = 'verbose';
}
}
if (opts.quiet) {
logger.transports[0].quiet = true;
}
if (cmd) {
extendOptions(cmd.options, globalOptions);
opts = parseArgv(argv, cmd.options);
return cmd(opts);
}
};
module.exports.main = main;
}).call(this);