@lodestar/utils
Version:
Utilities required across multiple lodestar packages
35 lines • 1.44 kB
TypeScript
import type { Argv, Options } from "yargs";
export interface CliExample {
command: string;
title?: string;
description?: string;
}
export interface CliOptionDefinition<T = any> extends Options {
example?: Omit<CliExample, "title">;
type: T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Array<unknown> ? "array" : never;
}
export type CliCommandOptions<OwnArgs> = Required<{
[K in keyof OwnArgs]: undefined extends OwnArgs[K] ? CliOptionDefinition<OwnArgs[K]> : CliOptionDefinition<OwnArgs[K]> & (Required<Pick<Options, "default">> | {
demandOption: true;
});
}>;
export interface CliCommand<OwnArgs = Record<never, never>, ParentArgs = Record<never, never>, R = any> {
command: string;
describe: string;
/**
* The folder in docs/pages that the cli.md should be placed in. If not provided no
* cli flags page will be generated for the command
*/
docsFolder?: string;
examples?: CliExample[];
options?: CliCommandOptions<OwnArgs>;
subcommands?: CliCommand<any, OwnArgs & ParentArgs>[];
handler?: (args: OwnArgs & ParentArgs) => Promise<R>;
}
/**
* Register a CliCommand type to yargs. Recursively registers subcommands too.
* @param yargs
* @param cliCommand
*/
export declare function registerCommandToYargs(yargs: Argv, cliCommand: CliCommand<any, any>): void;
//# sourceMappingURL=command.d.ts.map