UNPKG

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