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
TypeScript
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;