UNPKG

locklift

Version:

Node JS framework for working with Ever contracts. Inspired by Truffle and Hardhat. Helps you to build, test, run and maintain your smart contracts.

52 lines (51 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.commandInjector = exports.initializeExtenders = void 0; const config_1 = require("../../internal/config"); const rxjs_1 = require("rxjs"); const commander_1 = require("commander"); const build_1 = require("../../internal/cli/steps/build"); const initLocklift_1 = require("../../internal/cli/steps/initLocklift"); const initializeExtenders = (params) => { const extenders = global.extenders.filter((extender) => !!extender.initializer); if (extenders.length === 0) { return Promise.resolve(); } return (0, rxjs_1.lastValueFrom)((0, rxjs_1.from)(extenders).pipe((0, rxjs_1.mergeMap)(extender => (0, rxjs_1.from)(extender.initializer(params)).pipe((0, rxjs_1.tap)(extenderObject => { //@ts-ignore params.locklift[extender.pluginName] = extenderObject; }))))); }; exports.initializeExtenders = initializeExtenders; const commandInjector = (rootProgram) => { if (global.extenders.length === 0) { return; } global.extenders .filter((extender) => !!extender.commandBuilders) .forEach(({ commandBuilders }) => commandBuilders.forEach(({ commandCreator, skipSteps }) => { const command = new commander_1.Command(); command .option("-c, --contracts <contracts>", "Path to the contracts folder", "contracts") .option("-b, --build <build>", "Path to the build folder", "build") .option("--disable-include-path", "Disables including node_modules. Use this with old compiler versions", false) .option("-f, --force", "Force build contracts", false) .option("-n, --network <network>", "Network to use, choose from configuration") .addOption(new commander_1.Option("--config <config>", "Path to the config file") .default(() => (0, config_1.loadConfig)("locklift.config.ts")) .argParser(config => () => (0, config_1.loadConfig)(config))) .option("-s, --script <script>", "Script to run") .hook("preAction", async (thisCommand) => { const options = thisCommand.opts(); const config = await options.config(); if (!skipSteps?.build) { await (0, build_1.buildStep)(config, options, options.force); } // Initialize Locklift const locklift = await (0, initLocklift_1.initLockliftStep)(config, options); thisCommand.setOptionValue("locklift", locklift); }); rootProgram.addCommand(commandCreator(command)); })); }; exports.commandInjector = commandInjector;