Files
clean-architecture-frontend…/scripts/verify-ci-candidate-archive.ts

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