@authereum/zos
Version:
Command-line interface for the ZeppelinOS smart contract platform
93 lines • 4.73 kB
JavaScript
;
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