@biconomy/ecosystem
Version:
Testing infrastructure for abstractjs with ephemeral networks
88 lines (84 loc) • 3.06 kB
JavaScript
;
var fs = require('fs');
var path = require('path');
var process = require('process');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var fs__default = /*#__PURE__*/_interopDefault(fs);
var path__default = /*#__PURE__*/_interopDefault(path);
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var getArgValue = /* @__PURE__ */ __name((argName) => {
const args = process.argv;
const arg = args.find((arg2) => arg2.startsWith(`--${argName}=`));
if (arg) {
return arg.split("=")[1];
}
return null;
}, "getArgValue");
var newChainIdString = getArgValue("chainId");
var templateDir = getArgValue("templateDir");
var outputDir = getArgValue("outputDir");
if (!newChainIdString) {
console.error(
"Error: --chainId argument is missing. Please provide it like --chainId=12345"
);
process.exit(1);
}
if (!templateDir) {
console.error(
"Error: --templateDir argument is missing. Please provide it like --templateDir=/path/to/templates"
);
process.exit(1);
}
if (!outputDir) {
console.error(
"Error: --outputDir argument is missing. Please provide it like --outputDir=/path/to/output"
);
process.exit(1);
}
var newChainIdNum = Number.parseInt(newChainIdString, 10);
if (Number.isNaN(newChainIdNum)) {
console.error("Error: --chainId must be a number.");
process.exit(1);
}
var sourceFilePath = path__default.default.join(templateDir, "84532.json");
var targetFilePath = path__default.default.join(outputDir, `${newChainIdString}.json`);
async function main() {
try {
await fs__default.default.promises.mkdir(outputDir, { recursive: true });
const sourceContent = await fs__default.default.promises.readFile(sourceFilePath, "utf-8");
const chainConfig = JSON.parse(sourceContent);
const originalRpcFromTemplate = chainConfig.rpc;
chainConfig.name = newChainIdString;
chainConfig.chainId = newChainIdString;
const placeholderRpc = "<YOUR RPC URL (debug_traceCall enabled)>";
if (chainConfig.rpc === placeholderRpc) {
chainConfig.rpc = `http://host.docker.internal:${newChainIdString}`;
}
const newJsonContent = JSON.stringify(chainConfig, null, 4);
await fs__default.default.promises.writeFile(targetFilePath, newJsonContent);
console.log(
`Successfully duplicated and updated chain config to ${targetFilePath}`
);
if (originalRpcFromTemplate !== chainConfig.rpc) {
console.log(
`RPC in new file: ${chainConfig.rpc} (changed from: ${originalRpcFromTemplate})`
);
} else {
console.log(
`RPC in new file: ${chainConfig.rpc} (unchanged from template)`
);
}
} catch (error) {
if (error instanceof Error) {
console.error(`An error occurred: ${error.message}`);
} else {
console.error("An unknown error occurred.");
}
process.exit(1);
}
}
__name(main, "main");
main();
//# sourceMappingURL=duplicate-chain.js.map
//# sourceMappingURL=duplicate-chain.js.map