1 | const {
|
2 | faillogAfter,
|
3 | logBoth,
|
4 | } = require('./log');
|
5 |
|
6 | const {
|
7 | yellow,
|
8 | } = require('./colorStr');
|
9 |
|
10 |
|
11 | function enhance(program, methodName, log) {
|
12 | program.Command.prototype[methodName] = (...args) => {
|
13 | if (methodName === 'unknownOption' && this._allowUnknownOption) {
|
14 | return;
|
15 | }
|
16 | program.outputHelp();
|
17 | faillogAfter(`${log(...args)}`);
|
18 | process.exit(0);
|
19 | };
|
20 | }
|
21 |
|
22 | module.exports = function tipEnhance(prog, cmdName) {
|
23 | |
24 |
|
25 |
|
26 | prog.on('--help', () => {
|
27 | logBoth(`Run ${yellow(`${cmdName} <command> --help`)} for detailed usage of given command.`);
|
28 | });
|
29 |
|
30 | |
31 |
|
32 |
|
33 | enhance(
|
34 | prog,
|
35 | 'missingArgument',
|
36 | argName => `Missing required argument ${yellow(`<${argName}>`)}`,
|
37 | );
|
38 |
|
39 | enhance(
|
40 | prog,
|
41 | 'unknownOption',
|
42 | optionName => `Unknown option ${yellow(optionName)}`,
|
43 | );
|
44 |
|
45 | enhance(
|
46 | prog,
|
47 | 'optionMissingArgument',
|
48 | (option, flag) => `Missing required argument for option ${yellow(option.flags) + (flag ? `, got ${yellow(flag)}` : '')}`,
|
49 | );
|
50 |
|
51 | |
52 |
|
53 |
|
54 | prog
|
55 | .arguments('<command>')
|
56 | .action((cmd) => {
|
57 | prog.outputHelp();
|
58 | faillogAfter(`Unknown command ${yellow(cmd)}`);
|
59 | });
|
60 |
|
61 | |
62 |
|
63 |
|
64 | if (!process.argv.slice(2).length) {
|
65 | prog.outputHelp();
|
66 | }
|
67 | };
|