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; }