UNPKG

@mail-core/cli

Version:

Инструментарий для написания cli-скриптов

34 lines (33 loc) 1.48 kB
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; };