refactor: generate CI workflow from gate contracts

This commit is contained in:
DongHyeonka
2026-08-02 13:53:25 +09:00
parent 777ce5c9ed
commit 1bb2cc4a20
45 changed files with 8599 additions and 1177 deletions
+37
View File
@@ -0,0 +1,37 @@
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;
}