hologit
Version:
Hologit automates the projection of layered composite file trees based on flat, declarative plans
62 lines (52 loc) • 1.42 kB
JavaScript
// setup logger
const logger = require('winston');
const loggerConsole = new logger.transports.Console({
level: process.env.DEBUG ? 'debug' : 'info',
format: logger.format.combine(
logger.format.colorize(),
logger.format.prettyPrint(),
logger.format.splat(),
logger.format.simple(),
),
// all logger output to STDERR
stderrLevels: Object.keys(require('winston/lib/winston/config').cli.levels)
});
logger.add(loggerConsole);
module.exports = { logger };
// route command line
require('yargs')
.version(require('../package.json').version)
.option('d', {
alias: 'debug',
type: 'boolean',
default: false,
global: true
})
.option('q', {
alias: 'quiet',
type: 'boolean',
default: false,
global: true
})
.check(function (argv) {
if (argv.debug) {
loggerConsole.level = 'debug';
} else if (argv.quiet) {
loggerConsole.level = 'error';
}
return true;
})
.commandDir('../commands', { exclude: /\.test\.js$/ })
.demandCommand()
.showHelpOnFail(false, 'Specify --help for available options')
.fail((msg, err) => {
logger.error(msg || err.message);
if (err) {
logger.debug(err.stack);
}
process.exit(1);
})
.strict()
.help()
.argv;