cmrd
Version:
A tiny utility for building command-line strings with clean and simple syntax.
7 lines (6 loc) • 636 B
TypeScript
type CmrdArgIndex = number;
type CmrdIf = [CmrdArgIndex, string];
type CmrdExpression = string | CmrdArgIndex | CmrdIf;
type GetArgsType<T> = T extends [infer Head, ...infer Tail] ? Head extends CmrdExpression ? Head extends CmrdArgIndex ? [arg?: string, ...GetArgsType<Tail>, ...args: Array<string | undefined>] : [...GetArgsType<Tail>] : [...args: Array<string | undefined>] : [...args: Array<string | undefined>];
declare function cmrd<TExprs extends CmrdExpression[]>(strings: TemplateStringsArray, ...exprs: TExprs): (...args: GetArgsType<TExprs>) => string;
export { cmrd as default, cmrd, CmrdIf, CmrdExpression, CmrdArgIndex };