@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
69 lines (68 loc) • 3.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer_1 = __importDefault(require("inquirer"));
const child_process_1 = require("child_process");
const upgradesConfig_1 = require("./upgradesConfig");
const config_1 = require("@repo/config");
const hardhat_1 = require("hardhat");
async function upgradeContract() {
try {
const env = process.env.NEXT_PUBLIC_APP_ENV;
if (!env)
throw new Error("Environment variable NEXT_PUBLIC_APP_ENV is not set.");
const config = (0, config_1.getConfig)(process.env.NEXT_PUBLIC_APP_ENV);
// Prompt the user to select a contract to upgrade
const { contract } = await inquirer_1.default.prompt({
type: "list",
name: "contract",
message: "Which contract do you want to upgrade?",
choices: Object.keys(upgradesConfig_1.upgradeConfig),
});
const selectedContract = upgradesConfig_1.upgradeConfig[contract];
const versionChoices = selectedContract.versions.map(version => ({
name: `${version} - ${selectedContract.descriptions[version]}`,
value: version,
}));
// Prompt the user to select the version to upgrade to
const { version } = await inquirer_1.default.prompt({
type: "list",
name: "version",
message: `Which version do you want to upgrade ${contract} to?`,
choices: versionChoices,
});
const deployer = (await hardhat_1.ethers.getSigners())[0];
console.log(`You are about to upgrade the following contract:`);
console.log(`\nContract: ${selectedContract.name}`);
console.log(`Contract address: ${config[selectedContract.configAddressField]}`);
console.log(`Version: ${version}`);
console.log(`Upgrade description: ${selectedContract.descriptions[version]}`);
console.log(`Upgrader wallet: ${deployer.address}`);
console.log(`Environment: ${env}\n`);
// Confirm the upgrade
const { confirmUpgrade } = await inquirer_1.default.prompt({
type: "confirm",
name: "confirmUpgrade",
message: `Do you want to proceed with the upgrade of ${selectedContract.name} to version ${version} on environment ${env}?`,
default: false,
});
if (!confirmUpgrade) {
console.log("Upgrade aborted.");
process.exit(0);
}
// Set environment variables
process.env.CONTRACT_TO_UPGRADE = selectedContract.name;
process.env.CONTRACT_VERSION = version;
console.log(`\nStarting upgrade of ${selectedContract.name} to version ${version} on ${env}...`);
// Run the upgrade script
(0, child_process_1.execSync)(`turbo run upgrade:contract:${env}`, { stdio: "inherit" });
console.log("\nUpgrade complete!");
}
catch (error) {
console.error("Upgrade failed:", error);
process.exit(1);
}
}
upgradeContract();