Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
33 lines
888 B
JavaScript
33 lines
888 B
JavaScript
#!/usr/bin/env node
|
|
|
|
import { createHash } from "node:crypto";
|
|
import { readdir, readFile, writeFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
|
|
const targetDir = path.resolve(process.argv[2] ?? "dist");
|
|
const ignoredSuffixes = new Set([".blockmap", ".yml"]);
|
|
|
|
function shouldHash(fileName) {
|
|
return (
|
|
!ignoredSuffixes.has(path.extname(fileName)) &&
|
|
fileName !== "SHA256SUMS.txt"
|
|
);
|
|
}
|
|
|
|
const entries = (await readdir(targetDir, { withFileTypes: true }))
|
|
.filter((entry) => entry.isFile() && shouldHash(entry.name))
|
|
.map((entry) => entry.name)
|
|
.sort();
|
|
|
|
const lines = [];
|
|
for (const entry of entries) {
|
|
const buffer = await readFile(path.join(targetDir, entry));
|
|
const hash = createHash("sha256").update(buffer).digest("hex");
|
|
lines.push(`${hash} ${entry}`);
|
|
}
|
|
|
|
await writeFile(
|
|
path.join(targetDir, "SHA256SUMS.txt"),
|
|
`${lines.join("\n")}\n`
|
|
);
|