27 lines
1.0 KiB
TypeScript
27 lines
1.0 KiB
TypeScript
export const CANDIDATE_ARCHIVE_USAGE =
|
|
"Usage: verify-ci-candidate-archive --archive <path> [--extract-to <path>] [--github-output <path>]\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<string, string>();
|
|
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")! } : {}),
|
|
});
|
|
}
|