25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
import { ParsingInto, ArgParser } from './argparser';
|
|
import { PrintHelp, ProvidesHelp, Versioned, Named, Descriptive, Aliased } from './helpdoc';
|
|
import { Runner } from './runner';
|
|
declare type ArgTypes = Record<string, ArgParser<any> & Partial<ProvidesHelp>>;
|
|
declare type HandlerFunc<Args extends ArgTypes> = (args: Output<Args>) => any;
|
|
declare type CommandConfig<Arguments extends ArgTypes, Handler extends HandlerFunc<Arguments>> = {
|
|
args: Arguments;
|
|
version?: string;
|
|
name: string;
|
|
description?: string;
|
|
handler: Handler;
|
|
aliases?: string[];
|
|
};
|
|
declare type Output<Args extends ArgTypes> = {
|
|
[key in keyof Args]: ParsingInto<Args[key]>;
|
|
};
|
|
/**
|
|
* A command line utility.
|
|
*
|
|
* A combination of multiple flags, options and arguments
|
|
* with a common name and a handler that expects them as input.
|
|
*/
|
|
export declare function command<Arguments extends ArgTypes, Handler extends HandlerFunc<Arguments>>(config: CommandConfig<Arguments, Handler>): ArgParser<Output<Arguments>> & PrintHelp & ProvidesHelp & Named & Runner<Output<Arguments>, ReturnType<Handler>> & Partial<Versioned & Descriptive & Aliased>;
|
|
export {};
|