execli
Version:
Generate task-oriented CLIs declaratively
14 lines • 824 B
TypeScript
import { InferredOptionTypes, Options } from "yargs";
import { Task } from "./tasks.js";
type CommandOptions = Readonly<Record<string, Options>>;
export type OptionsContext<O extends CommandOptions | void = void> = O extends CommandOptions ? Readonly<InferredOptionTypes<O>> : void;
export type Command<O extends CommandOptions | void = void, A = void> = Readonly<O extends CommandOptions ? {
options: O;
} : unknown> & Readonly<{
task: Task<OptionsContext<O>, A>;
}>;
export declare const getCommand: <O extends void | Readonly<Record<string, Options>> = void, A = void>(command: Command<O, A>) => Command<O, A>;
type Commands = Readonly<Record<string, Command<any>>>;
export declare const runCli: (commands: Commands, commandArguments?: string[]) => Promise<void>;
export {};
//# sourceMappingURL=commands.d.ts.map