UNPKG

@fairyfromalfeya/locklift-deploy

Version:

Locklift plugin for replicable deployments and easy testing

79 lines (78 loc) 3.63 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); require("./type-extensions"); const path_1 = __importDefault(require("path")); const plugins_1 = require("locklift/plugins"); const type_extensions_1 = require("./type-extensions"); const commander_1 = __importDefault(require("commander")); const deployments_1 = require("./deployments"); const fs_extra_1 = __importDefault(require("fs-extra")); const utils_1 = require("./utils"); __exportStar(require("./deployments"), exports); __exportStar(require("./type-extensions"), exports); const program = new commander_1.default.Command(""); (0, plugins_1.addPlugin)({ pluginName: type_extensions_1.PLUGIN_NAME, initializer: async ({ network, locklift, config, }) => { if (!network) { return; // throw new Error("Deployments can't be run without network"); } const networkID = await locklift.provider.getProviderState().then((res) => res.networkId); const pathToDeployFolder = path_1.default.resolve("deploy"); fs_extra_1.default.ensureDirSync(pathToDeployFolder); const networkDeploy = config.networks[network].deploy?.map((el) => path_1.default.join(pathToDeployFolder, el)); const deploymentsFiles = (networkDeploy ? networkDeploy : [pathToDeployFolder]) .reduce((acc, next) => { return [...acc, ...((0, utils_1.getTagsTree)(next)?.map((el) => el.path) || [])]; }, []) .map((pathToFile) => require(pathToFile)); return new deployments_1.Deployments(locklift, deploymentsFiles, network, networkID); }, commandBuilders: [ { commandCreator: (command) => command .name("deploy") .option("--disable-build", "Disable automatic contracts build", false) .option("-t, --tags [value...]", "Tags for deploy") .option("-r, --reset", "Reset deployments store") .action(async (option) => { if (!option.network) { throw new Error("Deployments can't be run without network"); } if (option.reset) { option.locklift.deployments.reset(); process.exit(0); } await option.locklift.deployments.load(); if (option.tags && option.tags.length > 0) { await option.locklift.deployments.fixture({ include: option.tags, }); } else { await option.locklift.deployments.fixture(); } process.exit(0); }), skipSteps: { build: process.argv.includes('--disable-build') }, }, ], });