UNPKG

make-cli

Version:

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

43 lines (42 loc) 1.59 kB
export type HandlerUnknownReturn = (...args: any[]) => any; export type HandlerNoReturn = (...args: any[]) => 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: <TPartialConfig extends PartialConfig>(configInput: TPartialConfig) => any; export default _default;