Files
playbook/antigravity-awesome-skills/verification/aas-v1/verifier/bin/merge-product-evidence.mjs
T
2026-07-18 00:02:59 +00:00

22 lines
1.1 KiB
JavaScript

#!/usr/bin/env node
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { aggregateReceipts, writeBundle } from "../lib/aggregate.mjs";
import { loadReceiptValidator } from "../lib/receipt.mjs";
const outIndex = process.argv.indexOf("--out");
const out = outIndex >= 0 ? path.resolve(process.argv[outIndex + 1]) : null;
const inputs = process.argv.slice(2).filter((value, index, all) => value !== "--out" && all[index - 1] !== "--out");
if (!out || inputs.length === 0) throw new Error("Usage: merge-product-evidence --out <bundle.json> <receipt...>");
const here = path.dirname(fileURLToPath(import.meta.url));
const schema = path.resolve(here, "..", "..", "schemas", "product-verifier-receipt.schema.json");
const validator = loadReceiptValidator(schema);
const receipts = inputs.map((file) => JSON.parse(fs.readFileSync(file, "utf8")));
const bundle = aggregateReceipts(receipts, validator);
writeBundle(out, bundle);
process.stdout.write(`${JSON.stringify({ ok: bundle.status === "passed", out, bundleDigest: bundle.bundleDigest, failures: bundle.failures })}\n`);
if (bundle.status !== "passed") process.exit(1);