1 | export declare type CliParsedCommandHandler = (parsed: ParsedCliCommand) => Promise<void | number> | void | number;
|
2 | export declare type CliCommandHandler = <TOptions extends {} = {}, TArgs extends {} = {}>(args: TArgs, options: TOptions, parsedCmd?: ParsedCliCommand<TOptions, TArgs>) => Promise<void | number> | void | number;
|
3 | export declare type CliValueType = 'boolean' | 'string' | 'number';
|
4 | export declare type CliValue = boolean | string | number | undefined;
|
5 | import { CliCommandDefinitionParameterPromptQuestion } from './prompt';
|
6 | export interface CliOptions {
|
7 | globalHandler?: CliParsedCommandHandler;
|
8 | showPrompts?: boolean;
|
9 | }
|
10 | export interface CliBaseCommandDefinition<TCliOptions extends {} = {}, TTransformedOptions extends {} = TCliOptions> {
|
11 | name: string;
|
12 | description?: string;
|
13 | options?: CliCommandDefinitionOption[];
|
14 | allowDynamicOptions?: boolean;
|
15 | examples?: string[];
|
16 | transformOptions?: (options: TCliOptions) => TTransformedOptions;
|
17 | }
|
18 | export interface CliProgramDefinition extends CliBaseCommandDefinition {
|
19 | defaultCommandName?: string;
|
20 | commands?: CliCommandDefinition[];
|
21 | }
|
22 | export interface CliCommandDefinition<TCliOptions extends {} = {}, TTransformedOptions extends {} = TCliOptions, TCliArgs extends {} = {}, TTransformedArgs extends {} = TCliArgs> extends CliBaseCommandDefinition<TCliOptions, TTransformedOptions> {
|
23 | arguments?: CliCommandDefinitionArgument[];
|
24 | handler?: CliCommandHandler;
|
25 | env?: {
|
26 | [name: string]: string;
|
27 | };
|
28 | transformArguments?: (options: TCliArgs) => TTransformedArgs;
|
29 | }
|
30 | export declare type CliValueValidatorFunction = (value: CliValue) => boolean | string;
|
31 | export interface CliCommandDefinitionParameter {
|
32 | name: string;
|
33 | description?: string;
|
34 | valueType?: CliValueType;
|
35 | default?: CliValue;
|
36 | transform?: (value: CliValue) => CliValue;
|
37 | validate?: CliValueValidatorFunction | RegExp;
|
38 | prompt?: CliCommandDefinitionParameterPromptQuestion;
|
39 | }
|
40 | export interface CliCommandDefinitionArgument extends CliCommandDefinitionParameter {
|
41 | isOptional?: boolean;
|
42 | isVariadic?: boolean;
|
43 | }
|
44 | export interface CliCommandDefinitionOption extends CliCommandDefinitionParameter {
|
45 | syntax?: string;
|
46 | flag?: string;
|
47 | commandHandler?: CliParsedCommandHandler;
|
48 | }
|
49 | export interface CliParsedCommandDefinitionArgument extends CliCommandDefinitionArgument {
|
50 | wasPassed: boolean;
|
51 | value: CliValue | CliValue[];
|
52 | }
|
53 | export interface CliParsedCommandDefinitionOption extends CliCommandDefinitionOption {
|
54 | wasPassed: boolean;
|
55 | value: CliValue;
|
56 | }
|
57 | export declare type ParserErrorType = 'command' | 'argument' | 'option';
|
58 | export interface ParserErrors {
|
59 | commandErrors: string[];
|
60 | argumentErrors: string[];
|
61 | optionErrors: string[];
|
62 | allErrors: string[];
|
63 | hasErrors: boolean;
|
64 | }
|
65 | export interface ParsedCliCommand<TOptions extends {} = {}, TArgs extends {} = {}> {
|
66 | program: CliProgramDefinition;
|
67 | command: CliCommandDefinition;
|
68 | optionDefinitions: {
|
69 | [name: string]: CliCommandDefinitionOption;
|
70 | };
|
71 | parsedOptions: {
|
72 | [name: string]: CliParsedCommandDefinitionOption;
|
73 | };
|
74 | parsedArguments: {
|
75 | [name: string]: CliParsedCommandDefinitionArgument;
|
76 | };
|
77 | parsedCommandName: string;
|
78 | arguments: TArgs;
|
79 | options: TOptions;
|
80 | dynamicOptions: {
|
81 | [name: string]: CliValue;
|
82 | };
|
83 | passedArguments: string[];
|
84 | passedOptions: string[];
|
85 | errors: ParserErrors;
|
86 | version: string | undefined;
|
87 | env: {
|
88 | [name: string]: string;
|
89 | };
|
90 | run: () => Promise<CliRunResult<TOptions, TArgs>>;
|
91 | }
|
92 | export interface CliRunResult<TOptions extends {} = {}, TArgs extends {} = {}> {
|
93 | parsedCommand: ParsedCliCommand<TOptions, TArgs>;
|
94 | exitCode: number | undefined;
|
95 | }
|
96 | export interface MriOpts {
|
97 | alias?: {
|
98 | [name: string]: string | string[];
|
99 | };
|
100 | unknown?: (flag: string) => any;
|
101 | default?: {
|
102 | [name: string]: string | boolean | number;
|
103 | };
|
104 | string?: string | string[];
|
105 | boolean?: string | string[];
|
106 | lazy?: boolean;
|
107 | }
|