@sun-fe-cli/sun
Version:
core of the sun-fe-cli
34 lines (27 loc) • 1.19 kB
JavaScript
const yargs = require('yargs/yargs');
const { globalOptions } = require('./globalOptions');
module.exports = sunCLI;
function sunCLI(argv, cwd) {
const cli = yargs(argv, cwd);
return globalOptions(cli)
.demandCommand(1, '至少需要一个命令名称,请通过--help查看帮助使用方法')
.recommendCommands()
.strict()
.fail((msg, err) => {
// certain yargs validations throw strings :P
const actual = err || new Error(msg);
// ValidationErrors are already logged, as are package errors
if (actual.name !== "ValidationError" && !actual.pkg) {
// the recommendCommands() message is too terse
if (/Did you mean/.test(actual.message)) {
console.log("sun", `Unknown command "${cli.parsed.argv._[0]}"`);
}
console.log("sun", actual.message);
}
// exit non-zero so the CLI can be usefully chained
cli.exit(actual.exitCode > 0 ? actual.exitCode : 1, actual);
})
.usage('Usage: $0 <command> [options]')
.alias('h', 'help')
.alias('v', 'version')
}