cc-zos
Version:
Command-line interface for the ZeppelinOS smart contract platform
57 lines (42 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Truffle = require('../models/truffle/Truffle');
var _Truffle2 = _interopRequireDefault(_Truffle);
var _Session = require('../models/network/Session');
var _Session2 = _interopRequireDefault(_Session);
var _ccZosLib = require('cc-zos-lib');
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const DEFAULT_TIMEOUT = 10 * 60; // 10 minutes
exports.default = async function runWithTruffle(script, options) {
const config = _Truffle2.default.config();
const { networks: networkList } = config;
const { network, from, timeout } = _Session2.default.getOptions(options);
const txParams = from ? { from: from.toLowerCase() } : {};
if (!network) throw Error('A network name must be provided to execute the requested action.');
if (!networkList[network]) throw Error('Given network is not defined in your truffle-config file');
config.network = network;
if (!from && networkList[network].from) networkList[network].from = networkList[network].from.toLowerCase();
_ccZosLib.Contracts.setSyncTimeout((_lodash2.default.isNil(timeout) ? DEFAULT_TIMEOUT : timeout) * 1000);
if (options.compile) await _Truffle2.default.compile(config);
await initTruffle(config);
await script({ network: await _Truffle2.default.getNetworkName(), txParams });
if (!options.dontExitProcess) process.exit(0);
};
function initTruffle(config) {
return new Promise((resolve, reject) => {
const TruffleEnvironment = require('truffle-core/lib/environment');
TruffleEnvironment.detect(config, function (error) {
if (error) reject(error);
const Web3 = require('web3');
const { provider, resolver } = _Truffle2.default.setNonceTrackerIfNeeded(config);
global.web3 = new Web3(provider);
global.artifacts = resolver;
resolve();
});
});
}
module.exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;