@mail-core/cli
Version:
Инструментарий для написания cli-скриптов
34 lines (33 loc) • 1.48 kB
TypeScript
import type { OptionsMap, Argv, OptionWithArgMap } from '../args';
import { ProcessExitEvent } from '../process/exit';
import { ExtendedConsole } from '../console/console';
import Chalk = require('chalk');
export declare type CommandEnv<O extends OptionsMap> = (Pick<Command<O>, 'name' | 'describe' | 'hidden'> & {
style: typeof Chalk;
console: ExtendedConsole;
options: OptionWithArgMap<O>;
exit: (code: number) => void;
fail: (err: Error) => void;
});
export declare type Command<O extends OptionsMap> = {
readonly name: string | string[];
readonly aliases?: string[];
readonly describe?: string;
readonly hidden?: boolean;
readonly options: O;
readonly check?: (argv: Argv<O>) => true;
readonly handler: (argv: Argv<O>, env: CommandEnv<O>) => void | Promise<void>;
readonly exitHandler?: (evt: ProcessExitEvent, argv: Argv<O>, env: CommandEnv<O>) => void | Promise<void>;
};
export declare type CLIScheme = (Command<any> | Record<string, Command<any>[]>);
export declare function createCommand<O extends OptionsMap>(cmd: Command<O>): Command<O>;
export declare function getActiveConsole(): ExtendedConsole;
export declare function execCommand<O extends OptionsMap>(cmd: Command<O>, argv: Argv<O> | string[]): Promise<void>;
export declare type CLIEnv = {
__dirname: string;
};
export declare function initCLI(env: CLIEnv, ...scheme: CLIScheme[]): {
[x: string]: unknown;
_: (string | number)[];
$0: string;
};