Files
openclaw/src/cli/program/helpers.ts
2026-07-13 05:30:37 -07:00

31 lines
1.2 KiB
TypeScript

// Shared Commander registration helpers for repeated options and positive integers.
import { InvalidArgumentError } from "commander";
import { parseStrictPositiveInteger } from "../../infra/parse-finite-number.js";
/** Commander option collector for repeatable string flags. */
export function collectOption(value: string, previous: string[] = []): string[] {
return [...previous, value];
}
/** Parse an optional positive integer, treating empty values as unset. */
export function parsePositiveIntOrUndefined(value: unknown): number | undefined {
if (value === undefined || value === null || value === "") {
return undefined;
}
return parseStrictPositiveInteger(value);
}
/** Parse a positive integer without treating empty values specially. */
export function parseStrictPositiveIntOrUndefined(value: unknown): number | undefined {
return parseStrictPositiveInteger(value);
}
/** Commander argument parser for required positive integer options. */
export function parseStrictPositiveIntOption(value: string, flag: string): number {
const parsed = parseStrictPositiveInteger(value);
if (parsed === undefined) {
throw new InvalidArgumentError(`${flag} must be a positive integer.`);
}
return parsed;
}