vasku
Version:
TVM-Solidity contract development framework
111 lines (110 loc) • 4.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCommands = exports.SE_ACTIONS = exports.GIVER_ACTIONS = exports.CLEAN = exports.SE = exports.GIVER = exports.RUN = exports.TEST = exports.COMPILE = void 0;
const commander_1 = require("commander");
const compile_1 = require("../actions/compile");
const test_1 = require("../actions/test");
const run_1 = require("../actions/run");
const giver_1 = require("../actions/giver");
const clean_1 = require("../actions/clean");
const se_1 = require("../actions/se");
const package_1 = require("./package");
const giver_2 = require("./giver");
exports.COMPILE = 'compile';
exports.TEST = 'test';
exports.RUN = 'run';
exports.GIVER = 'giver';
exports.SE = 'se';
exports.CLEAN = 'clean';
exports.GIVER_ACTIONS = {
INFO: 'info',
SEND: 'send',
DEPLOY: 'deploy'
};
exports.SE_ACTIONS = {
INFO: 'info',
VERSION: 'version',
START: 'start',
STOP: 'stop',
RESET: 'reset'
};
function createCommands(config) {
commander_1.program
.name(package_1.packageJson.name)
.version(package_1.packageJson.version);
commander_1.program
.command(exports.COMPILE)
.description('compile Solidity contracts')
.option('-a, --all', 'Compile all contracts')
.action(async (options) => { await (0, compile_1.compile)(config, options.all); });
commander_1.program
.command(exports.TEST)
.addArgument(new commander_1.Argument('[patterns...]', 'part of test-file path'))
.addOption(new commander_1.Option('-n, --network [network]', 'network').choices(Object.keys(config.networks)))
.option('-c, --no-compile', 'don\'t compile')
.description('run tests')
.action(async (patterns, options) => {
await (0, test_1.test)(config, patterns, options?.network, options?.compile);
});
commander_1.program
.command(exports.RUN)
.addArgument(new commander_1.Argument('<script>', 'script path e.g. "./deploy/wallet.ts"'))
.addOption(new commander_1.Option('-n, --network [network]', 'network').choices(Object.keys(config.networks)))
.option('-c, --no-compile', 'don\'t compile')
.description('run script')
.action(async (script, options) => {
await (0, run_1.run)(config, script, options?.network, options?.compile);
});
commander_1.program
.command(exports.GIVER)
.addArgument(new commander_1.Argument('<network>', 'network').choices(Object.keys(config.networks)))
.addArgument(new commander_1.Argument('<action>', 'action').choices(Object.values(exports.GIVER_ACTIONS)))
.option(giver_2.GIVER_SEND_FLAGS.to, 'address to send coins')
.option(giver_2.GIVER_SEND_FLAGS.value, 'coins value e.g. "0.1"')
.description('manage giver')
.action(async (network, action, options) => {
const validationResult = (0, giver_2.validateGiverSendOptions)(options);
switch (action) {
case exports.GIVER_ACTIONS.INFO:
await (0, giver_1.giverInfo)(config, network);
break;
case exports.GIVER_ACTIONS.SEND:
if (validationResult.value === undefined)
console.error(validationResult.error);
else
await (0, giver_1.giverSend)(config, network, validationResult.value);
break;
case exports.GIVER_ACTIONS.DEPLOY:
await (0, giver_1.giverDeploy)(config, network);
break;
}
});
commander_1.program
.command(exports.SE)
.addArgument(new commander_1.Argument('[action]', 'action').choices(Object.values(exports.SE_ACTIONS)))
.description('manage local node Simple Emulator')
.action(async (action) => {
switch (action) {
case exports.SE_ACTIONS.INFO:
await (0, se_1.seInfo)();
break;
case exports.SE_ACTIONS.VERSION:
await (0, se_1.seVersion)();
break;
case exports.SE_ACTIONS.START:
await (0, se_1.seStart)(config.se);
break;
case exports.SE_ACTIONS.STOP:
await (0, se_1.seStop)();
break;
case exports.SE_ACTIONS.RESET:
await (0, se_1.seReset)();
break;
}
});
commander_1.program
.command(exports.CLEAN)
.description('clean build and cache directories')
.action(() => { (0, clean_1.clean)(config.paths); });
}
exports.createCommands = createCommands;