UNPKG

4.05 kBTypeScriptView Raw
1export declare type CliParsedCommandHandler = (parsed: ParsedCliCommand) => Promise<void | number> | void | number;
2export declare type CliCommandHandler = <TOptions extends {} = {}, TArgs extends {} = {}>(args: TArgs, options: TOptions, parsedCmd?: ParsedCliCommand<TOptions, TArgs>) => Promise<void | number> | void | number;
3export declare type CliValueType = 'boolean' | 'string' | 'number';
4export declare type CliValue = boolean | string | number | undefined;
5import { CliCommandDefinitionParameterPromptQuestion } from './prompt';
6export interface CliOptions {
7 globalHandler?: CliParsedCommandHandler;
8 showPrompts?: boolean;
9}
10export 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}
18export interface CliProgramDefinition extends CliBaseCommandDefinition {
19 defaultCommandName?: string;
20 commands?: CliCommandDefinition[];
21}
22export 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}
30export declare type CliValueValidatorFunction = (value: CliValue) => boolean | string;
31export 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}
40export interface CliCommandDefinitionArgument extends CliCommandDefinitionParameter {
41 isOptional?: boolean;
42 isVariadic?: boolean;
43}
44export interface CliCommandDefinitionOption extends CliCommandDefinitionParameter {
45 syntax?: string;
46 flag?: string;
47 commandHandler?: CliParsedCommandHandler;
48}
49export interface CliParsedCommandDefinitionArgument extends CliCommandDefinitionArgument {
50 wasPassed: boolean;
51 value: CliValue | CliValue[];
52}
53export interface CliParsedCommandDefinitionOption extends CliCommandDefinitionOption {
54 wasPassed: boolean;
55 value: CliValue;
56}
57export declare type ParserErrorType = 'command' | 'argument' | 'option';
58export interface ParserErrors {
59 commandErrors: string[];
60 argumentErrors: string[];
61 optionErrors: string[];
62 allErrors: string[];
63 hasErrors: boolean;
64}
65export 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}
92export interface CliRunResult<TOptions extends {} = {}, TArgs extends {} = {}> {
93 parsedCommand: ParsedCliCommand<TOptions, TArgs>;
94 exitCode: number | undefined;
95}
96export 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}