jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
60 lines (51 loc) • 1.66 kB
JavaScript
const chalk = require('chalk');
const meow = require('meow');
const cmd = require('commander');
const yo = require('./yo');
const log = require('../generators/log');
const pkg = require('../package.json');
const binName = Object.keys(pkg.bin)[0];
const version = pkg.version;
//Init yo.
yo.init();
//Init commander
cmd.version(version).usage('[command] [options]').allowUnknownOption();
//Handle --help
cmd.on('--help',() => {
log.info('\n')
});
//Handle unknown command.
cmd.on('command:*', (name) => {
log.error(`${chalk.yellow(name)} is not a known command. See '${chalk.white(`${binName} --help`)}'.`);
process.exit(1);
})
/* Create yo generator commands (only for parent generator) */
Object.keys(yo.metas).forEach((generator) => {
const meta = yo.metas[generator];
const name = yo.toCommandName(generator, meta);
const command = cmd.command(name)
.description(meta.desc)
.allowUnknownOption()
.action((_) => {
yo.run(meta, false);
})
.on('--help', () => {
yo.run(meta, true);
});
/*
if(meta.opts) {
Object.keys(meta.opts).forEach(key => {
const opt = meta.opts[key];
const flags = yo.toCommandOptionFlags(opt);
const desc = yo.toCommandOptionDesc(opt);
command.option(flags, desc);
});
}
*/
});
//Parse command line args
cmd.parse(process.argv);
//Print help if no args.
if (cmd.args.length < 1) {
cmd.help();
}