1 | import { parserErrorHandler } from './error';
|
2 | import { internalOptions } from './internalOptions';
|
3 | import { Parser } from './Parser';
|
4 | import { CliPromptHandler, promptHandler } from './prompt';
|
5 | import { createRunHandler } from './runHandler';
|
6 | import { CliOptions, CliProgramDefinition, CliRunResult, ParsedCliCommand } from './types';
|
7 |
|
8 | export class Cli {
|
9 | public static start = async (
|
10 | programDefinition: CliProgramDefinition,
|
11 | version?: string,
|
12 | cliOptions: CliOptions = {},
|
13 | argv = process.argv
|
14 | ): Promise<CliRunResult> => {
|
15 | const cli = new Cli(programDefinition, version, cliOptions);
|
16 | return cli.start(argv);
|
17 | };
|
18 |
|
19 | public static parse = (
|
20 | programDefinition: CliProgramDefinition,
|
21 | version?: string,
|
22 | cliOptions: CliOptions = {},
|
23 | argv = process.argv
|
24 | ): ParsedCliCommand => {
|
25 | const cli = new Cli(programDefinition, version, cliOptions);
|
26 | return cli.parse(argv);
|
27 | };
|
28 | constructor(
|
29 | private programDefinition: CliProgramDefinition,
|
30 | private version?: string,
|
31 | private cliOptions: CliOptions = {}
|
32 | ) {}
|
33 |
|
34 | public parse = (argv: string[] = process.argv): ParsedCliCommand => {
|
35 | const parser = new Parser(
|
36 | argv,
|
37 | this.programDefinition,
|
38 | createRunHandler(this.cliOptions),
|
39 | parserErrorHandler,
|
40 | promptHandler,
|
41 | this.version,
|
42 | internalOptions,
|
43 | this.cliOptions.showPrompts
|
44 | );
|
45 | return parser.parsedCommand;
|
46 | };
|
47 |
|
48 | public start = async (argv: string[] = process.argv): Promise<CliRunResult> => {
|
49 | const parsedCommand = this.parse(argv);
|
50 | return parsedCommand.run();
|
51 | };
|
52 | }
|