Skip to content

Commit

Permalink
Merge branch 'main' into chore/gh-workflow-for-sui-scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
npty authored Aug 26, 2024
2 parents d5806e4 + 166d381 commit a9cc229
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 61 deletions.
47 changes: 1 addition & 46 deletions common/cli-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
require('dotenv').config();

const fs = require('fs');
const { Option, Command } = require('commander');
const { Option } = require('commander');

// A path to the chain configuration files
const CHAIN_CONFIG_PATH = `${__dirname}/../axelar-chains-config/info`;
Expand Down Expand Up @@ -44,53 +44,8 @@ const addBaseOptions = (program, options = {}) => {
return program;
};

const addExtendedOptions = (program, options = {}) => {
addBaseOptions(program, options);

program.addOption(new Option('-v, --verify', 'verify the deployed contract on the explorer').env('VERIFY'));

if (options.artifactPath) {
program.addOption(new Option('--artifactPath <artifactPath>', 'artifact path'));
}

if (options.contractName) {
program.addOption(new Option('-c, --contractName <contractName>', 'contract name').makeOptionMandatory(true));
}

if (options.deployMethod) {
program.addOption(
new Option('-m, --deployMethod <deployMethod>', 'deployment method')
.choices(['create', 'create2', 'create3'])
.default(options.deployMethod),
);
}

if (options.salt) {
program.addOption(new Option('-s, --salt <salt>', 'salt to use for create2 deployment').env('SALT'));
}

if (options.skipExisting) {
program.addOption(new Option('-x, --skipExisting', 'skip existing if contract was already deployed on chain').env('SKIP_EXISTING'));
}

if (options.upgrade) {
program.addOption(new Option('-u, --upgrade', 'upgrade a deployed contract').env('UPGRADE'));
}

if (options.predictOnly) {
program.addOption(new Option('--predictOnly', 'output the predicted changes only').env('PREDICT_ONLY'));
}

return program;
};

if (require.main === module) {
addBaseOptions(new Command());
}

module.exports = {
CHAIN_CONFIG_PATH,
CHAIN_ENVIRONMENTS,
addBaseOptions,
addExtendedOptions,
};
47 changes: 46 additions & 1 deletion evm/cli-utils.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
const { Option } = require('commander');
const { addBaseOptions, ...exportedCliUtils } = require('../common/cli-utils');

const addEvmOptions = (program, options = {}) => {
addBaseOptions(program, options);

program.addOption(new Option('-v, --verify', 'verify the deployed contract on the explorer').env('VERIFY'));

if (options.artifactPath) {
program.addOption(new Option('--artifactPath <artifactPath>', 'artifact path'));
}

if (options.contractName) {
program.addOption(new Option('-c, --contractName <contractName>', 'contract name').makeOptionMandatory(true));
}

if (options.deployMethod) {
program.addOption(
new Option('-m, --deployMethod <deployMethod>', 'deployment method')
.choices(['create', 'create2', 'create3'])
.default(options.deployMethod),
);
}

if (options.salt) {
program.addOption(new Option('-s, --salt <salt>', 'salt to use for create2 deployment').env('SALT'));
}

if (options.skipExisting) {
program.addOption(new Option('-x, --skipExisting', 'skip existing if contract was already deployed on chain').env('SKIP_EXISTING'));
}

if (options.upgrade) {
program.addOption(new Option('-u, --upgrade', 'upgrade a deployed contract').env('UPGRADE'));
}

if (options.predictOnly) {
program.addOption(new Option('--predictOnly', 'output the predicted changes only').env('PREDICT_ONLY'));
}

return program;
};

module.exports = {
...require('../common/cli-utils'),
...exportedCliUtils,
addBaseOptions,
addEvmOptions,
};
4 changes: 2 additions & 2 deletions evm/deploy-amplifier-gateway.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const {
getDeployOptions,
getDomainSeparator,
} = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');
const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js');

const { WEIGHTED_SIGNERS_TYPE, encodeWeightedSigners } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils');
Expand Down Expand Up @@ -399,7 +399,7 @@ async function programHandler() {
program.name('deploy-amplifier-gateway').description('Deploy Amplifier Gateway');

// use create3 as default deploy method
addExtendedOptions(program, { salt: true, deployMethod: 'create3', skipExisting: true, upgrade: true, predictOnly: true });
addEvmOptions(program, { salt: true, deployMethod: 'create3', skipExisting: true, upgrade: true, predictOnly: true });

program.addOption(new Option('-r, --rpc <rpc>', 'chain rpc url').env('URL'));
program.addOption(new Option('--previousSignersRetention <previousSignersRetention>', 'previous signer retention').default(15));
Expand Down
4 changes: 2 additions & 2 deletions evm/deploy-contract.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const {
getContractJSON,
getDeployOptions,
} = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');

async function getConstructorArgs(contractName, config, wallet, options) {
const args = options.args ? JSON.parse(options.args) : {};
Expand Down Expand Up @@ -335,7 +335,7 @@ if (require.main === module) {

program.name('deploy-contract').description('Deploy contracts using create, create2, or create3');

addExtendedOptions(program, {
addEvmOptions(program, {
artifactPath: true,
contractName: true,
salt: true,
Expand Down
4 changes: 2 additions & 2 deletions evm/deploy-gateway-v6.2.x.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const {
getGasOptions,
getDeployOptions,
} = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');
const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js');

const AxelarGatewayProxy = require('@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json');
Expand Down Expand Up @@ -523,7 +523,7 @@ async function programHandler() {

program.name('deploy-gateway-v6.2.x').description('Deploy gateway v6.2.x');

addExtendedOptions(program, { salt: true, deployMethod: 'create', skipExisting: true, upgrade: true, predictOnly: true });
addEvmOptions(program, { salt: true, deployMethod: 'create', skipExisting: true, upgrade: true, predictOnly: true });

program.addOption(new Option('-r, --rpc <rpc>', 'chain rpc url').env('URL'));
program.addOption(new Option('--reuseProxy', 'reuse proxy contract modules for new implementation deployment'));
Expand Down
4 changes: 2 additions & 2 deletions evm/deploy-its.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const {
getDeployedAddress,
wasEventEmitted,
} = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');
const { Command, Option } = require('commander');

/**
Expand Down Expand Up @@ -478,7 +478,7 @@ if (require.main === module) {
.default('create3'),
);

addExtendedOptions(program, { artifactPath: true, skipExisting: true, upgrade: true, predictOnly: true });
addEvmOptions(program, { artifactPath: true, skipExisting: true, upgrade: true, predictOnly: true });

program.addOption(new Option('--reuseProxy', 'reuse existing proxy (useful for upgrade deployments'));
program.addOption(new Option('--contractName <contractName>', 'contract name').default('InterchainTokenService')); // added for consistency
Expand Down
4 changes: 2 additions & 2 deletions evm/deploy-upgradable.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const {
getDeployOptions,
mainProcessor,
} = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');

function getProxy(wallet, proxyAddress) {
return new Contract(proxyAddress, IUpgradable.abi, wallet);
Expand Down Expand Up @@ -297,7 +297,7 @@ if (require.main === module) {

program.name('deploy-upgradable').description('Deploy upgradable contracts');

addExtendedOptions(program, { artifactPath: true, contractName: true, salt: true, skipChains: true, upgrade: true, predictOnly: true });
addEvmOptions(program, { artifactPath: true, contractName: true, salt: true, skipChains: true, upgrade: true, predictOnly: true });

program.addOption(
new Option('-m, --deployMethod <deployMethod>', 'deployment method').choices(['create', 'create2', 'create3']).default('create2'),
Expand Down
4 changes: 2 additions & 2 deletions evm/interchainTokenFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const {
} = ethers;
const { Command, Option } = require('commander');
const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');
const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its');
const { getWallet } = require('./sign-utils');
const IInterchainTokenFactory = getContractJSON('IInterchainTokenFactory');
Expand Down Expand Up @@ -222,7 +222,7 @@ if (require.main === module) {

program.name('InterchainTokenFactory').description('Script to perform interchain token factory commands');

addExtendedOptions(program, { address: true, salt: true });
addEvmOptions(program, { address: true, salt: true });

program.addOption(
new Option('--action <action>', 'interchain token factory action')
Expand Down
4 changes: 2 additions & 2 deletions evm/its.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const InterchainTokenService = getContractJSON('InterchainTokenService');
const InterchainTokenFactory = getContractJSON('InterchainTokenFactory');
const IInterchainTokenDeployer = getContractJSON('IInterchainTokenDeployer');
const IOwnable = getContractJSON('IOwnable');
const { addExtendedOptions } = require('./cli-utils');
const { addEvmOptions } = require('./cli-utils');
const { getSaltFromKey } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils');
const tokenManagerImplementations = {
INTERCHAIN_TOKEN: 0,
Expand Down Expand Up @@ -656,7 +656,7 @@ if (require.main === module) {

program.name('ITS').description('Script to perform ITS commands');

addExtendedOptions(program, { address: true, salt: true });
addEvmOptions(program, { address: true, salt: true });

program.addOption(new Option('-c, --contractName <contractName>', 'contract name').default('InterchainTokenService'));
program.addOption(
Expand Down

0 comments on commit a9cc229

Please sign in to comment.