types/invocation.types.ts

types/invocation.types.ts is a file in Argv Contract. 28 lines of code and 5 definitions.

export interface FlagSpec {
    readonly describe: string;
    readonly name: string;
    readonly repeatable?: boolean;
    readonly takesValue: boolean;
}

export interface PositionalSpec {
    readonly describe: string;
    readonly name: string;
    readonly optional?: boolean;
    readonly variadic?: boolean;
}

export interface ArgvSpec {
    readonly command: string;
    readonly flags: readonly FlagSpec[];
    readonly positionals?: readonly PositionalSpec[];
    readonly rest?: PositionalSpec;
    readonly summary: string;
}

export interface ParsedArgv {
    readonly flags: ReadonlyMap<string, readonly string[]>;
    readonly positionals: readonly string[];
    readonly rest: readonly string[];
}

export type ArgvOutcome =
    | { readonly kind: "help"; readonly usage: string }
    | { readonly kind: "parsed"; readonly argv: ParsedArgv }
    | { readonly kind: "refused"; readonly reason: string; readonly usage: string };