UNPKG

1.79 kBPlain TextView Raw
1import { parserErrorHandler } from './error';
2import { internalOptions } from './internalOptions';
3import { Parser } from './Parser';
4import { CliPromptHandler, promptHandler } from './prompt';
5import { createRunHandler } from './runHandler';
6import { CliOptions, CliProgramDefinition, CliRunResult, ParsedCliCommand } from './types';
7
8export 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}