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
JavaScript
;
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;