f2e-server3
Version:
f2e-server 3.0
37 lines (36 loc) • 1.2 kB
TypeScript
interface Option<R extends string, V> {
name: string;
short: string;
argument: R;
description?: string;
defaultValue?: V;
values?: V[];
}
type PickArgs<T extends string> = T extends `-${string}, --${string} <${infer R}>` ? R : never;
type PickCmd<T extends string, V> = T extends `${string} <${infer F}>` ? Command<{
[k in F]: V;
}> : Command;
export declare class Command<Args extends object = {}> {
options: Option<string, any>[];
commands: Map<string, Command<{}>>;
name: string;
subname: string | undefined;
_version: string;
_description: string;
constructor(name: string);
version(v: string): this;
command<T extends string>(name: T): PickCmd<T, any>;
description(description: string): this;
option<T extends `-${string}, --${string} <${string}>`, F = string>(name_all: T, description?: string, defaultValue?: F, values?: readonly F[]): Command<Args & {
[k in PickArgs<T>]: F;
}>;
actions: {
(options: Args): void | Promise<void>;
}[];
action(ac: {
(options: Args): void | Promise<void>;
}): this;
parse(argv: string[]): Promise<void>;
private showHelp;
}
export {};