@fairyfromalfeya/locklift-deploy
Version:
Locklift plugin for replicable deployments and easy testing
79 lines (78 loc) • 3.63 kB
JavaScript
;
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') },
},
],
});