Files
uupl-smart-contract/tools/select-manifest.mjs
T

29 lines
1.1 KiB
JavaScript

import { readFile } from "node:fs/promises";
import { join, resolve } from "node:path";
import { pathToFileURL } from "node:url";
import { atomicWrite, EDUCATIONAL_WARNING, networkSpec, readManifest } from "./finalize-manifest.mjs";
export async function selectManifest({ root = process.cwd(), network }) {
const spec = networkSpec(network);
const source = join(root, "deployments", spec.canonical);
await readManifest(source);
const contents = await readFile(source);
const active = join(root, "deployments", "active.json");
await atomicWrite(active, contents);
return { source, active };
}
export async function runSelectCli(argv, { root = process.cwd(), log = console.log } = {}) {
log(EDUCATIONAL_WARNING);
if (argv.length !== 1) throw new Error("usage: select-manifest.mjs <anvil|baseSepolia>");
return selectManifest({ root, network: argv[0] });
}
if (process.argv[1] && pathToFileURL(resolve(process.argv[1])).href === import.meta.url) {
runSelectCli(process.argv.slice(2)).catch((error) => {
console.error(error.message);
process.exitCode = 1;
});
}