@openzeppelin/cli
Version:
Command-line interface for the OpenZeppelin smart contract platform
94 lines • 4.89 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(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 upgrades_1 = require("@openzeppelin/upgrades");
const TruffleConfig_1 = __importDefault(require("./TruffleConfig"));
const Session_1 = __importDefault(require("../network/Session"));
const NetworkConfig_1 = __importDefault(require("./NetworkConfig"));
const lodash_1 = require("lodash");
const ConfigManager = {
config: undefined,
initialize(root = process.cwd()) {
if (!TruffleConfig_1.default.exists() && !NetworkConfig_1.default.exists()) {
NetworkConfig_1.default.initialize(root);
}
},
initStaticConfiguration(root = process.cwd()) {
this.setBaseConfig(root);
const buildDir = this.config.getBuildDir();
upgrades_1.Contracts.setLocalBuildDir(buildDir);
},
initNetworkConfiguration(options, silent, root = process.cwd()) {
return __awaiter(this, void 0, void 0, function* () {
this.initStaticConfiguration(root);
const { network: networkName, from, timeout, blockTimeout } = Session_1.default.getOptions(options, silent);
Session_1.default.setDefaultNetworkIfNeeded(options.network);
if (!networkName)
throw Error('A network name must be provided to execute the requested action.');
const { provider, artifactDefaults, network } = yield this.config.loadNetworkConfig(networkName, root);
upgrades_1.Contracts.setArtifactsDefaults(artifactDefaults);
try {
upgrades_1.ZWeb3.initialize(provider, { pollingTimeout: timeout, blockTimeout });
yield upgrades_1.ZWeb3.checkNetworkId(network.networkId);
const txParams = Object.assign({ from: upgrades_1.ZWeb3.toChecksumAddress(from || artifactDefaults.from || (yield upgrades_1.ZWeb3.defaultAccount())) }, lodash_1.pickBy(lodash_1.pick(artifactDefaults, ['gas', 'gasPrice']), x => !lodash_1.isNil(x)));
return { network: yield upgrades_1.ZWeb3.getNetworkName(), txParams };
}
catch (error) {
if (this.config && this.config.name === 'NetworkConfig') {
const providerInfo = typeof provider === 'string' ? ` on ${provider}` : '';
const message = `Could not connect to the ${networkName} Ethereum network${providerInfo}. Please check your networks.js configuration file.`;
error.message = `${message} Error: ${error.message}.`;
throw error;
}
else
throw error;
}
});
},
getBuildDir(root = process.cwd()) {
this.setBaseConfig(root);
return this.config.getBuildDir();
},
getCompilerInfo(root = process.cwd()) {
this.setBaseConfig(root);
const { compilers: { solc: { version, settings }, }, } = this.config.getConfig();
const { enabled: optimizer, runs: optimizerRuns } = settings.optimizer;
return { version, optimizer, optimizerRuns };
},
getNetworkNamesFromConfig(root = process.cwd()) {
this.setBaseConfig(root);
const config = this.config.getConfig();
return config && config.networks ? Object.keys(config.networks) : undefined;
},
getConfigFileName(root = process.cwd()) {
this.setBaseConfig(root);
return this.config.getConfigFileName(root);
},
setBaseConfig(root = process.cwd()) {
if (this.config)
return;
// these lines could be expanded to support different libraries like embark, ethjs, buidler, etc
if (NetworkConfig_1.default.exists(root)) {
this.config = NetworkConfig_1.default;
}
else if (TruffleConfig_1.default.exists(root)) {
this.config = TruffleConfig_1.default;
}
else {
throw Error('Could not find networks.js file, please remember to initialize your project.');
}
},
};
exports.default = ConfigManager;
//# sourceMappingURL=ConfigManager.js.map
;