UNPKG

@itsmworkbench/cli

Version:

How to do a cli

26 lines (25 loc) 1.77 kB
import { ErrorsAnd } from "@laoban/utils"; import { FileOps } from "@laoban/fileops"; import { CliContext } from "./cli"; export type FileNameAndCliConfigTc<Config, Clean> = { fileName?: string; tc: CliConfigTC<Config, Clean>; }; export type ValidateFn<Config, CleanConfig> = (config: Config) => ErrorsAnd<CleanConfig>; export interface CliConfigTC<Config, Clean> { load: (fileOps: FileOps) => (file: string | undefined) => Promise<ErrorsAnd<Config>>; displayErrors: (errors: string[]) => void; validate: ValidateFn<Config, Clean>; cleanForDisplay(config: Clean): any; } export type CliTcFinder<Config, Clean> = (fileOps: FileOps, startDir: string) => Promise<ErrorsAnd<FileNameAndCliConfigTc<Config, Clean>>>; export interface ConfigAndCliTc<Config, Clean> { cliConfigTc: CliConfigTC<Config, Clean>; configFileName?: string; config: Clean; } export declare function loadConfig<Config, Clean>(fileOps: FileOps, tcFinder: CliTcFinder<Config, Clean>, startDir: string): Promise<ErrorsAnd<ConfigAndCliTc<Config, Clean>>>; export declare function fixedConfig<Config>(config: Config): CliTcFinder<Config, Config>; export declare function notFoundError<Config, CleanConfig>(name: string): Promise<ErrorsAnd<FileNameAndCliConfigTc<Config, CleanConfig>>>; export declare const defaultTo: <Config>(config: Config, fileName?: string) => (name: string) => Promise<ErrorsAnd<FileNameAndCliConfigTc<Config, Config>>>; export declare function fileConfig<Context extends CliContext, Config, CleanConfig>(name: string, validate: ValidateFn<Config, CleanConfig>, onNotFound: (name: string) => Promise<ErrorsAnd<FileNameAndCliConfigTc<Config, CleanConfig>>>, parseFile?: (context: string) => (value: string) => any): CliTcFinder<Config, CleanConfig>;