fix: recover and fence atomic activation
This commit is contained in:
@@ -1,15 +1,38 @@
|
||||
#!/usr/bin/env node
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { resolve } from 'node:path';
|
||||
import { rollbackRelease } from './lib/release-transaction.mjs';
|
||||
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 !== 12) throw new Error('Usage: rollback-release.mjs <root> <target-release-id> <new-release-archive> <transaction-id> <verifier-module> <trust-policy> <smoke-command> <uid> <gid> <expected-current> <expected-fence> <trusted-now>');
|
||||
const [root, targetReleaseId, archivePath, transactionId, verifierModulePath, trustPolicyPath, smokeCommand, uid, gid, expectedCurrentManifestDigest, expectedFence, now] = args;
|
||||
const receipt = await rollbackRelease({ root: resolve(root), targetReleaseId, archivePath: resolve(archivePath), transactionId,
|
||||
verifierModulePath: resolve(verifierModulePath), trustPolicyPath: resolve(trustPolicyPath), smokeCommand: resolve(smokeCommand),
|
||||
uid: Number(uid), gid: Number(gid), expectedCurrentManifestDigest, expectedFence: Number(expectedFence), now });
|
||||
if (args.length !== 7)
|
||||
throw new Error(
|
||||
"Usage: rollback-release.mjs <root> <target-release-id> <inbox-archive> <transaction-id> <smoke-command> <expected-current> <expected-fence>",
|
||||
);
|
||||
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; });
|
||||
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;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user