core/selectors/invocation.selector.ts

core/selectors/invocation.selector.ts is a file in Argv Contract. 15 lines of code and 5 definitions.

import { DECIMAL } from "#configuration/constants/invocation.constants";
import type { ParsedArgv } from "#types/invocation.types";

export const hasFlag = function hasFlag(argv: ParsedArgv, name: string): boolean {
    return argv.flags.has(name);
};

export const flagValues = function flagValues(argv: ParsedArgv, name: string): readonly string[] {
    return argv.flags.get(name) ?? [];
};

export const flagValue = function flagValue(argv: ParsedArgv, name: string): string | undefined {
    return argv.flags.get(name)?.at(0);
};

export const numberFlag = function numberFlag(argv: ParsedArgv, name: string, fallback: number): number {
    const parsed = Number.parseInt(flagValue(argv, name) ?? "", DECIMAL);
    return Number.isNaN(parsed) ? fallback : parsed;
};