UNPKG

@authereum/zos

Version:

Command-line interface for the ZeppelinOS smart contract platform

93 lines 4.73 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_pickby_1 = __importDefault(require("lodash.pickby")); const lodash_pick_1 = __importDefault(require("lodash.pick")); const npm_programmatic_1 = __importDefault(require("npm-programmatic")); const semver_1 = __importDefault(require("semver")); const zos_lib_1 = require("zos-lib"); const truffle_config_1 = __importDefault(require("truffle-config")); const TruffleConfig = { name: 'TruffleConfig', cwd: null, exists(path = process.cwd()) { const truffleFile = `${path}/truffle.js`; const truffleConfigFile = `${path}/truffle-config.js`; return (zos_lib_1.FileSystem.exists(truffleFile) || zos_lib_1.FileSystem.exists(truffleConfigFile)); }, isTruffleProject(path = process.cwd()) { return this.exists(path); }, loadNetworkConfig(network, force = false, path = process.cwd()) { return __awaiter(this, void 0, void 0, function* () { const config = this.getConfig(force); const { networks: networkList } = config; if (!networkList[network]) throw Error(`Given network '${network}' is not defined in your ${this.getTruffleConfigFileName(path)} file`); config.network = network; const { provider } = config; yield this.checkHdWalletProviderVersion(provider); const artifactDefaults = this.getArtifactDefaults(config); return Object.assign({}, config, { provider, artifactDefaults }); }); }, getBuildDir() { const config = this.getConfig(); return config.contracts_build_directory; }, getConfig(force = false) { if (!force && this.config) return this.config; try { this.config = truffle_config_1.default.detect({ logger: console, workingDirectory: this.cwd, }); return this.config; } catch (error) { error.message = `Could not load truffle configuration file. Error: ${error.message}`; throw error; } }, checkHdWalletProviderVersion(provider, path = process.cwd()) { return __awaiter(this, void 0, void 0, function* () { if (provider.constructor.name !== 'HDWalletProvider') return; const packagesList = yield npm_programmatic_1.default.list(path); const hdwalletProviderPackage = packagesList.find(packageNameAndVersion => packageNameAndVersion.match(/^truffle-hdwallet-provider@/)); if (hdwalletProviderPackage) { const [, version] = hdwalletProviderPackage.split('@'); if (version && semver_1.default.lt(version, '1.0.0')) { zos_lib_1.Loggy.noSpin.warn(__filename, 'checkHdWalletProviderVersion', 'check-hdwallet-provider-version', `Version ${version} of truffle-hdwallet-provider might fail when deploying multiple contracts. Consider upgrading it to version '1.0.0' or higher.`); } } }); }, getArtifactDefaults(config) { const network = config.network; const truffleFile = require('truffle-config').search(); const rawConfig = truffleFile ? require(truffleFile) : {}; const networks = rawConfig.networks || {}; const networkConfig = networks[network]; const configDefaults = lodash_pickby_1.default(lodash_pick_1.default(this.config, 'from', 'gasPrice')); const networkDefaults = lodash_pickby_1.default(lodash_pick_1.default(networkConfig, 'from', 'gas', 'gasPrice')); return Object.assign({}, configDefaults, networkDefaults); }, getTruffleConfigFileName(path) { const truffleFile = `${path}/truffle.js`; return zos_lib_1.FileSystem.exists(truffleFile) ? 'truffle.js' : 'truffle-config.js'; }, }; exports.default = TruffleConfig; //# sourceMappingURL=TruffleConfig.js.map