38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { appendFile } from "node:fs/promises";
|
|
|
|
import { verifyCiCandidateArchive } from "./lib/ci-candidate-archive.ts";
|
|
import {
|
|
CANDIDATE_ARCHIVE_USAGE,
|
|
parseCandidateArchiveArguments,
|
|
} from "./lib/ci-candidate-archive-cli.ts";
|
|
|
|
const parsedArguments = parseCandidateArchiveArguments(process.argv.slice(2));
|
|
if (!parsedArguments) {
|
|
process.stderr.write(CANDIDATE_ARCHIVE_USAGE);
|
|
process.exitCode = 2;
|
|
} else try {
|
|
const result = await verifyCiCandidateArchive({
|
|
archivePath: parsedArguments.archivePath,
|
|
repositoryRoot: process.cwd(),
|
|
...(process.env.CANDIDATE_ARCHIVE_SHA256
|
|
? { expectedSha256: process.env.CANDIDATE_ARCHIVE_SHA256 }
|
|
: {}),
|
|
...(parsedArguments.extractTo ? { extractTo: parsedArguments.extractTo } : {}),
|
|
});
|
|
if (parsedArguments.githubOutput) {
|
|
await appendFile(
|
|
parsedArguments.githubOutput,
|
|
`archive_sha256=${result.archiveSha256}\ndist_sha256=${result.manifest.distSha256}\n`,
|
|
"utf8",
|
|
);
|
|
}
|
|
process.stdout.write(
|
|
`Candidate archive: ${result.memberCount} members, sha256=${result.archiveSha256} PASS\n`,
|
|
);
|
|
} catch (error) {
|
|
process.stderr.write(
|
|
`Candidate archive failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
);
|
|
process.exitCode = 1;
|
|
}
|