export const CANDIDATE_ARCHIVE_USAGE = "Usage: verify-ci-candidate-archive --archive [--extract-to ] [--github-output ]\n"; export function parseCandidateArchiveArguments(arguments_: readonly string[]): Readonly<{ archivePath: string; extractTo?: string; githubOutput?: string; }> | null { const allowed = new Set(["--archive", "--extract-to", "--github-output"]); const values = new Map(); for (let index = 0; index < arguments_.length; index += 2) { const flag = arguments_[index]; const value = arguments_[index + 1]; if (!flag || !allowed.has(flag) || values.has(flag) || !value || value.startsWith("--")) { return null; } values.set(flag, value); } const archivePath = values.get("--archive"); if (!archivePath) return null; return Object.freeze({ archivePath, ...(values.has("--extract-to") ? { extractTo: values.get("--extract-to")! } : {}), ...(values.has("--github-output") ? { githubOutput: values.get("--github-output")! } : {}), }); }