export class CommandError extends Error { constructor( public readonly exitStatus: number, message: string, ) { super(message); this.name = "CommandError"; } } export function flagValue(args: readonly string[], flag: string): string | undefined { const index = args.indexOf(flag); return index < 0 ? undefined : args[index + 1]; } export function hasFlag(args: readonly string[], flag: string): boolean { return args.includes(flag); } export function isPlainObject(value: unknown): value is Record { return Boolean(value) && typeof value === "object" && !Array.isArray(value); } const PATH_COMPONENT_RE = /^[A-Za-z0-9_-][A-Za-z0-9._-]{0,63}$/; export function assertSafePathComponent(value: string, label: string): void { if (!PATH_COMPONENT_RE.test(value) || value.includes("..")) { throw new CommandError(2, `invalid path component for --${label}: ${value}`); } }