UNPKG

@authereum/zos

Version:

Command-line interface for the ZeppelinOS smart contract platform

94 lines 3.76 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const lodash_pick_1 = __importDefault(require("lodash.pick")); const lodash_omit_1 = __importDefault(require("lodash.omit")); const lodash_isundefined_1 = __importDefault(require("lodash.isundefined")); const zos_lib_1 = require("zos-lib"); const ZosConfig = { name: 'ZosConfig', initialize(root = process.cwd()) { this.createContractsDir(root); this.createZosConfigFile(root); }, exists(root = process.cwd()) { return zos_lib_1.FileSystem.exists(`${root}/networks.js`); }, getConfig(root = process.cwd()) { // eslint-disable-next-line @typescript-eslint/no-var-requires const zosConfigFile = require(`${root}/networks.js`); const compilers = zosConfigFile.compilers || this.getDefaultCompilersProperties(); const buildDir = `${root}/build/contracts`; return Object.assign({}, zosConfigFile, { compilers, buildDir }); }, getBuildDir() { return `${process.cwd()}/build/contracts`; }, loadNetworkConfig(networkName, root = process.cwd()) { const config = this.getConfig(root); const { networks } = config; if (!networks[networkName]) throw Error(`Given network '${networkName}' is not defined in your networks.js file`); const network = networks[networkName]; const provider = this.getProvider(networks[networkName]); const artifactDefaults = this.getArtifactDefaults(config, networks[networkName]); return Object.assign({}, config, { network, provider, artifactDefaults }); }, getProvider(network) { let { provider } = network; if (!provider) { const { host, port, protocol } = network; if (!host) throw Error('A host name must be specified'); if (!port) throw Error('A port must be specified'); provider = `${protocol ? protocol : 'http'}://${host}:${port}`; } else if (typeof provider === 'function') { provider = provider(); } return provider; }, getArtifactDefaults(zosConfigFile, network) { const defaults = ['gas', 'gasPrice', 'from']; const configDefaults = lodash_omit_1.default(lodash_pick_1.default(zosConfigFile, defaults), lodash_isundefined_1.default); const networkDefaults = lodash_omit_1.default(lodash_pick_1.default(network, defaults), lodash_isundefined_1.default); return Object.assign({}, configDefaults, networkDefaults); }, getDefaultCompilersProperties() { return { vyper: {}, solc: { settings: { optimizer: { enabled: false, runs: 200, }, }, }, }; }, createContractsDir(root) { const contractsDir = `${root}/contracts`; this.createDir(contractsDir); }, createZosConfigFile(root) { if (!this.exists(root)) { const blueprint = path_1.default.resolve(__dirname, './blueprint.networks.js'); zos_lib_1.FileSystem.copy(blueprint, `${root}/networks.js`); } }, createDir(dir) { if (!zos_lib_1.FileSystem.exists(dir)) { zos_lib_1.FileSystem.createDir(dir); zos_lib_1.FileSystem.write(`${dir}/.gitkeep`, ''); } }, }; exports.default = ZosConfig; //# sourceMappingURL=ZosConfig.js.map