UNPKG

@sun-fe-cli/sun

Version:

core of the sun-fe-cli

34 lines (27 loc) 1.19 kB
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') }