Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
eguajardo committed Aug 28, 2024
1 parent 3a34d86 commit 95c99c6
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 102 deletions.
57 changes: 3 additions & 54 deletions common/cli-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,9 @@ const addBaseOptions = (program, options = {}) => {
addEnvOption(program);

program.addOption(new Option('-y, --yes', 'skip deployment prompt confirmation').env('YES'));

if (!options.ignoreParallel) {
program.addOption(new Option('--parallel', 'run script parallely wrt chains'));
}

if (!options.ignoreSaveChainSeparately) {
program.addOption(new Option('--saveChainSeparately', 'save chain info separately'));
}

if (!options.ignoreGasOptions) {
program.addOption(new Option('--gasOptions <gasOptions>', 'gas options cli override'));
}
program.addOption(new Option('--parallel', 'run script parallely wrt chains'));
program.addOption(new Option('--saveChainSeparately', 'save chain info separately'));
program.addOption(new Option('--gasOptions <gasOptions>', 'gas options cli override'));

if (!options.ignoreChainNames) {
program.addOption(
Expand All @@ -62,48 +53,6 @@ const addBaseOptions = (program, options = {}) => {
return program;
};

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

if (!options.ignoreVerify) {
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 = {
addEnvOption,
addBaseOptions,
Expand Down
28 changes: 10 additions & 18 deletions cosmwasm/cli-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,20 @@

require('dotenv').config();

const { addExtendedOptions, addEnvOption } = require('../common');
const { addEnvOption } = require('../common');
const { governanceAddress } = require('./utils');

const { Option } = require('commander');

const addCommonAmplifierOptions = (program, options = {}) => {
const ops = {
ignoreParallel: true,
ignoreSaveChainSeparately: true,
ignoreGasOptions: true,
ignoreChainNames: true,
ignorePrivateKey: true,
ignoreVerify: true,
contractName: true,
salt: true,
...options,
};

const addAmplifierOptions = (program) => {
addEnvOption(program);
addExtendedOptions(program, ops);

program.addOption(new Option('-m, --mnemonic <mnemonic>', 'mnemonic').makeOptionMandatory(true).env('MNEMONIC'));
program.addOption(new Option('-a, --artifactPath <artifactPath>', 'artifact path').makeOptionMandatory(true).env('ARTIFACT_PATH'));
program.addOption(new Option('--aarch64', 'aarch64').env('AARCH64').default(false));
program.addOption(new Option('-a, --artifactPath <artifactPath>', 'artifact path').env('ARTIFACT_PATH'));
program.addOption(new Option('-c, --contractName <contractName>', 'contract name').makeOptionMandatory(true));
program.addOption(new Option('-n, --chainNames <chainNames>', 'chain names').default('none').env('CHAINS'));

program.addOption(new Option('-s, --salt <salt>', 'salt for instantiate2. defaults to contract name').env('SALT'));
program.addOption(
new Option('--admin <address>', 'when instantiating contract, set an admin address. Defaults to governance module account').default(
governanceAddress,
Expand All @@ -34,8 +24,10 @@ const addCommonAmplifierOptions = (program, options = {}) => {
program.addOption(new Option('--instantiate2', 'use instantiate2 for constant address deployment'));
program.addOption(new Option('--fetchCodeId', 'fetch code id from the chain by comparing to the uploaded code hash'));
program.addOption(new Option('-l, --label <label>', 'contract instance label'));

program.addOption(new Option('-y, --yes', 'skip prompt confirmation').env('YES'));
};

module.exports = {
addCommonAmplifierOptions,
addAmplifierOptions,
};
11 changes: 3 additions & 8 deletions cosmwasm/deploy-contract.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
require('dotenv').config();
const { isNil } = require('lodash');

const { addEnvOption } = require('../common');
const { isNumber, printInfo, loadConfig, saveConfig, prompt } = require('../evm/utils');
const { isNumber, printInfo, loadConfig, saveConfig, prompt, getChainConfig } = require('../evm/utils');
const {
prepareWallet,
prepareClient,
Expand All @@ -16,7 +15,7 @@ const {
} = require('./utils');

const { Command, Option } = require('commander');
const { addCommonAmplifierOptions } = require('./cli-utils');
const { addAmplifierOptions } = require('./cli-utils');

const upload = (client, wallet, chainName, config, options) => {
const { reuseCodeId, contractName, fetchCodeId } = options;
Expand Down Expand Up @@ -113,12 +112,8 @@ const programHandler = () => {

program.name('upload-contract').description('Upload CosmWasm contracts');

addCommonAmplifierOptions(program);
addAmplifierOptions(program);

program.addOption(new Option('-m, --mnemonic <mnemonic>', 'mnemonic').makeOptionMandatory(true).env('MNEMONIC'));
program.addOption(new Option('-a, --artifactPath <artifactPath>', 'artifact path').makeOptionMandatory(true).env('ARTIFACT_PATH'));
program.addOption(new Option('-c, --contractName <contractName>', 'contract name').makeOptionMandatory(true));
program.addOption(new Option('-n, --chainNames <chainNames>', 'chain names').default('none'));
program.addOption(new Option('-r, --reuseCodeId', 'reuse code Id'));
program.addOption(
new Option(
Expand Down
24 changes: 4 additions & 20 deletions cosmwasm/submit-proposal.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ const {
governanceAddress,
} = require('./utils');
const { isNumber, saveConfig, loadConfig, printInfo, prompt } = require('../evm/utils');
const { addEnvOption } = require('../common');
const {
StoreCodeProposal,
StoreAndInstantiateContractProposal,
Expand All @@ -32,7 +31,7 @@ const {
} = require('cosmjs-types/cosmwasm/wasm/v1/proposal');

const { Command, Option } = require('commander');
const { addCommonAmplifierOptions } = require('./cli-utils');
const { addAmplifierOptions } = require('./cli-utils');

const updateContractConfig = (contractConfig, chainConfig, key, value) => {
if (chainConfig) {
Expand Down Expand Up @@ -250,24 +249,7 @@ const programHandler = () => {

program.name('submit-proposal').description('Submit governance proposals');

addCommonAmplifierOptions(program, { predictOnly: true });

// TODO: combine deploy-contract and submit-proposal options to remove duplicates
program.addOption(new Option('-m, --mnemonic <mnemonic>', 'mnemonic').makeOptionMandatory(true).env('MNEMONIC'));
program.addOption(new Option('-a, --artifactPath <artifactPath>', 'artifact path').env('ARTIFACT_PATH'));
program.addOption(new Option('-c, --contractName <contractName>', 'contract name').makeOptionMandatory(true));
program.addOption(new Option('-n, --chainNames <chainNames>', 'chain names').default('none'));

program.addOption(new Option('-s, --salt <salt>', 'salt for instantiate2. defaults to contract name').env('SALT'));
program.addOption(
new Option('--admin <address>', 'when instantiating contract, set an admin address. Defaults to governance module account').default(
governanceAddress,
),
);
program.addOption(new Option('--instantiate2', 'use instantiate2 for constant address deployment'));
program.addOption(new Option('-l, --label <label>', 'contract instance label'));
program.addOption(new Option('--aarch64', 'aarch64').env('AARCH64').default(false));
program.addOption(new Option('-y, --yes', 'skip prompt confirmation').env('YES'));
addAmplifierOptions(program);

program.addOption(new Option('-t, --title <title>', 'title of proposal').makeOptionMandatory(true));
program.addOption(new Option('-d, --description <description>', 'description of proposal').makeOptionMandatory(true));
Expand All @@ -293,6 +275,8 @@ const programHandler = () => {

program.addOption(new Option('--msg <msg>', 'json encoded message to submit with an execute contract proposal'));

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

program.action((options) => {
main(options);
});
Expand Down
3 changes: 1 addition & 2 deletions cosmwasm/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,7 @@ const getSalt = (salt, contractName, chainNames) => fromHex(getSaltFromKey(salt

const getLabel = ({ contractName, label }) => label || contractName;

const readWasmFile = ({ artifactPath, contractName, aarch64 }) =>
readFileSync(`${artifactPath}/${pascalToSnake(contractName)}${aarch64 ? '-aarch64' : ''}.wasm`);
const readWasmFile = ({ artifactPath, contractName }) => readFileSync(`${artifactPath}/${pascalToSnake(contractName)}.wasm`);

const getChains = (config, { chainNames, instantiate2 }) => {
let chains = chainNames.split(',').map((str) => str.trim());
Expand Down

0 comments on commit 95c99c6

Please sign in to comment.