UNPKG

make-cli

Version:

Super easy declarative CLI framework with a single configuration object and a single function call.

44 lines (43 loc) 1.66 kB
import { Command as CommanderCommand } from 'commander'; export type HandlerUnknownReturn = (...args: unknown[]) => unknown; export type HandlerNoReturn = (...args: unknown[]) => void | Promise<void>; export type Option = { name: string; description?: string; defaultValue?: unknown; choices?: string[]; }; export type Command = { name: string; arguments?: string; description?: string; handler: HandlerNoReturn; options: Option[]; }; export type Config = { version?: string; name?: string; commands: Command[]; options: Option[]; arguments?: string; usage?: string; allowUnknownOption: boolean; action?: HandlerNoReturn; defaultCommandName?: string; }; export type PartialCommandObject = Omit<Command, 'options' | 'handler'> & { options?: PartialOptions; handler: HandlerUnknownReturn; }; export type PartialCommandObjectInObject = Omit<PartialCommandObject, 'name'> & Partial<Pick<PartialCommandObject, 'name'>>; export type PartialCommandInObject = PartialCommandObjectInObject | HandlerUnknownReturn; export type PartialCommands = PartialCommandObject[] | Record<string, PartialCommandInObject>; export type PartialOptionInObject = Omit<Option, 'name'> & Partial<Pick<Option, 'name'>>; export type PartialOptions = Option[] | Record<string, PartialOptionInObject>; type PartialConfig = Omit<Partial<Config>, 'commands' | 'options' | 'action'> & { commands?: PartialCommands; options?: PartialOptions; action?: HandlerUnknownReturn; }; declare const _default: (configInput?: PartialConfig) => void | Promise<void> | Promise<CommanderCommand>; export default _default;