#!/usr/bin/env node import { pathToFileURL } from "node:url"; import { resolve } from "node:path"; import { rollbackRelease } from "./lib/release-transaction.mjs"; async function main() { const args = process.argv.slice(2); if (args.length !== 7) throw new Error( "Usage: rollback-release.mjs ", ); const [ root, targetReleaseId, archivePath, transactionId, smokeCommand, expectedCurrentManifestDigest, expectedFence, ] = args; const receipt = await rollbackRelease({ root: resolve(root), targetReleaseId, archivePath: resolve(archivePath), transactionId, smokeCommand: resolve(smokeCommand), expectedCurrentManifestDigest, expectedFence: Number(expectedFence), }); process.stdout.write(`${JSON.stringify(receipt)}\n`); } if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) main().catch((error) => { process.stderr.write( `Release rollback failed: ${error instanceof Error ? error.message : "unknown error"}\n`, ); process.exitCode = 1; });