@itsmworkbench/cli
Version:
How to do a cli
26 lines (25 loc) • 1.77 kB
TypeScript
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>;