Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions common/cli-utils.js → common/cli-utils.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
'use strict';

require('dotenv').config();
import * as dotenv from 'dotenv';

const fs = require('fs');
const { Option } = require('commander');
dotenv.config();

import fs from 'fs';
import { Option, Command } from 'commander';

// A path to the chain configuration files
const CHAIN_CONFIG_PATH = `${__dirname}/../axelar-chains-config/info`;
const CHAIN_ENVIRONMENTS = fs.readdirSync(CHAIN_CONFIG_PATH).map((chainName: string) => chainName.split('.')[0]);

// A list of available chain environments which are the names of the files in the CHAIN_CONFIG_PATH
const CHAIN_ENVIRONMENTS = fs.readdirSync(CHAIN_CONFIG_PATH).map((chainName) => chainName.split('.')[0]);
export interface BaseOptions {
ignoreChainNames?: boolean;
ignorePrivateKey?: boolean;
address?: boolean;
}

const addEnvOption = (program, defaultValue) => {
export const addEnvOption = (program: Command, defaultValue?: string): void => {
program.addOption(
new Option('-e, --env <env>', 'environment')
.choices(CHAIN_ENVIRONMENTS)
Expand All @@ -21,11 +26,11 @@ const addEnvOption = (program, defaultValue) => {
);
};

const addBaseOptions = (program, options = {}) => {
export const addBaseOptions = (program: Command, options: BaseOptions = {}): Command => {
addEnvOption(program);

program.addOption(new Option('-y, --yes', 'skip deployment prompt confirmation').env('YES'));
program.addOption(new Option('--parallel', 'run script parallely wrt chains'));
program.addOption(new Option('--parallel', 'run script in parallel wrt chains'));
program.addOption(new Option('--gasOptions <gasOptions>', 'gas options cli override'));

if (!options.ignoreChainNames) {
Expand All @@ -52,17 +57,19 @@ const addBaseOptions = (program, options = {}) => {
return program;
};

// `optionMethod` is a method such as `addBaseOptions`
// `options` is an option object for optionMethod
const addOptionsToCommands = (program, optionMethod, options) => {
export const addOptionsToCommands = <T>(
program: Command,
optionMethod: (command: Command, options: T) => void,
options: T
): void => {
if (program.commands.length > 0) {
program.commands.forEach((command) => {
optionMethod(command, options);
});
}
};

const addStoreOptions = (program) => {
export const addStoreOptions = (program: Command): void => {
program.addOption(
new Option(
'-a, --artifact-dir <artifactDir>',
Expand All @@ -85,10 +92,3 @@ const addStoreOptions = (program) => {
}
});
};

module.exports = {
addEnvOption,
addBaseOptions,
addOptionsToCommands,
addStoreOptions,
};
29 changes: 18 additions & 11 deletions evm/cli-utils.js → evm/cli-utils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
const { Option } = require('commander');
const { addBaseOptions, ...exportedCliUtils } = require('../common/cli-utils');
import { Option, Command } from 'commander';
import { addEnvOption, addBaseOptions, addOptionsToCommands, addStoreOptions, BaseOptions } from '../common/cli-utils';

const addEvmOptions = (program, options = {}) => {
interface EvmOptions extends BaseOptions {
artifactPath?: boolean;
contractName?: boolean;
deployMethod?: string;
salt?: boolean;
skipExisting?: boolean;
upgrade?: boolean;
predictOnly?: boolean;
}

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

program.addOption(new Option('-v, --verify', 'verify the deployed contract on the explorer').env('VERIFY'));
Expand Down Expand Up @@ -41,7 +51,7 @@ const addEvmOptions = (program, options = {}) => {
return program;
};

const addTopUpOptions = (program) => {
const addTopUpOptions = (program: Command): void => {
program.addOption(new Option('-t, --target <target>', 'target balance for each account').makeOptionMandatory(true));
program.addOption(
new Option('--threshold <threshold>', 'top up accounts only if the balance is below this threshold').makeOptionMandatory(true),
Expand All @@ -56,14 +66,11 @@ const addTopUpOptions = (program) => {
program.addOption(
new Option('--addresses <addresses>', 'comma separated list of addresses to top up')
.default([])
.argParser((addresses) => addresses.split(',').map((address) => address.trim())),
.argParser((addresses: string) => addresses.split(',').map((address) => address.trim())),
);
program.addOption(new Option('-m, --mnemonic <mnemonic>', 'mnemonic').env('MNEMONIC'));
};

module.exports = {
...exportedCliUtils,
addBaseOptions,
addEvmOptions,
addTopUpOptions,
};
export { addEnvOption, addBaseOptions, addOptionsToCommands, addStoreOptions };
export { addEvmOptions, addTopUpOptions };
export type { BaseOptions, EvmOptions };
Loading