fix deployment
This commit is contained in:
parent
a7da9bc3c5
commit
38445c9e7f
|
@ -1,12 +1,10 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var web3 = require('web3');
|
|
||||||
var sha3_256 = require('js-sha3').sha3_256;
|
var sha3_256 = require('js-sha3').sha3_256;
|
||||||
|
|
||||||
ChainManager = function(_web3) {
|
ChainManager = function() {
|
||||||
this.chainManagerConfig = {};
|
this.chainManagerConfig = {};
|
||||||
this.currentChain = {};
|
this.currentChain = {};
|
||||||
this.file = "";
|
this.file = "";
|
||||||
this.web3 = _web3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChainManager.prototype.loadConfigFile = function(filename) {
|
ChainManager.prototype.loadConfigFile = function(filename) {
|
||||||
|
@ -25,12 +23,8 @@ ChainManager.prototype.loadConfig = function(config) {
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
ChainManager.prototype.init = function(env, config) {
|
ChainManager.prototype.init = function(env, config, web3) {
|
||||||
if (this.web3 === undefined) {
|
var block = web3.eth.getBlock(0);
|
||||||
web3.setProvider(new web3.providers.HttpProvider("http://" + config.rpcHost + ":" + config.rpcPort));
|
|
||||||
}
|
|
||||||
|
|
||||||
var block = this.web3.eth.getBlock(0);
|
|
||||||
if(!block){
|
if(!block){
|
||||||
throw new Error("Cannot get the genesis block, is embark blockchain running ?");
|
throw new Error("Cannot get the genesis block, is embark blockchain running ?");
|
||||||
}
|
}
|
||||||
|
@ -41,7 +35,6 @@ ChainManager.prototype.init = function(env, config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.currentChain = this.chainManagerConfig[chainId];
|
this.currentChain = this.chainManagerConfig[chainId];
|
||||||
//this.web3 = web3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChainManager.prototype.addContract = function(contractName, code, args, address) {
|
ChainManager.prototype.addContract = function(contractName, code, args, address) {
|
||||||
|
|
|
@ -4,28 +4,17 @@ var grunt = require('grunt');
|
||||||
var readYaml = require('read-yaml');
|
var readYaml = require('read-yaml');
|
||||||
var Config = require('./config/config.js');
|
var Config = require('./config/config.js');
|
||||||
|
|
||||||
// Ugly, but sleep lib has issues on osx
|
Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainManager, withProvider, withChain, _web3) {
|
||||||
sleep = function sleep(ms) {
|
|
||||||
var start = new Date().getTime();
|
|
||||||
while (new Date().getTime() < start + ms);
|
|
||||||
}
|
|
||||||
|
|
||||||
Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainManager, _web3) {
|
|
||||||
if (_web3 !== undefined) {
|
if (_web3 !== undefined) {
|
||||||
web3 = _web3;
|
web3 = _web3;
|
||||||
}
|
}
|
||||||
//this.blockchainConfig = (new Config.Blockchain()).loadConfigFile('config/blockchain.yml').config(env);
|
|
||||||
this.blockchainConfig = blockchainConfig;
|
|
||||||
this.chainManager = chainManager;
|
|
||||||
this.chainManager.init(env, this.blockchainConfig);
|
|
||||||
|
|
||||||
//this.contractsManager = (new Config.Contracts(contractFiles, blockchainConfig)).loadConfigFile('config/contracts.yml');
|
|
||||||
this.contractsManager = contractsConfig;
|
this.contractsManager = contractsConfig;
|
||||||
this.contractsConfig = this.contractsManager.config(env);
|
this.contractsConfig = this.contractsManager.config(env);
|
||||||
this.deployedContracts = {};
|
this.deployedContracts = {};
|
||||||
|
this.blockchainConfig = blockchainConfig;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (_web3 === undefined) {
|
if (withProvider) {
|
||||||
web3.setProvider(new web3.providers.HttpProvider("http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort));
|
web3.setProvider(new web3.providers.HttpProvider("http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort));
|
||||||
}
|
}
|
||||||
primaryAddress = web3.eth.coinbase;
|
primaryAddress = web3.eth.coinbase;
|
||||||
|
@ -34,6 +23,10 @@ Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainMa
|
||||||
throw new Error("==== can't connect to " + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort + " check if an ethereum node is running");
|
throw new Error("==== can't connect to " + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort + " check if an ethereum node is running");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.chainManager = chainManager;
|
||||||
|
this.chainManager.init(env, this.blockchainConfig, web3);
|
||||||
|
this.withChain = withChain;
|
||||||
|
|
||||||
console.log("primary account address is : " + primaryAddress);
|
console.log("primary account address is : " + primaryAddress);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,18 +48,6 @@ Deploy.prototype.deploy_contract = function(contractObject, contractParams, cb)
|
||||||
contractParams.push(callback);
|
contractParams.push(callback);
|
||||||
|
|
||||||
contractObject["new"].apply(contractObject, contractParams);
|
contractObject["new"].apply(contractObject, contractParams);
|
||||||
|
|
||||||
//var transactionHash = contractObject["new"].apply(contractObject, contractParams).transactionHash;
|
|
||||||
//var receipt = null;
|
|
||||||
//var time = 0;
|
|
||||||
//while ((receipt = web3.eth.getTransactionReceipt(transactionHash)) === null || receipt.contractAddress === null) {
|
|
||||||
// sleep(1000);
|
|
||||||
// time += 1;
|
|
||||||
// if (time >= this.blockchainConfig.deployTimeout) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//return receipt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Deploy.prototype.deploy_contracts = function(env, cb) {
|
Deploy.prototype.deploy_contracts = function(env, cb) {
|
||||||
|
@ -114,7 +95,6 @@ Deploy.prototype.deploy_a_contract = function(env, className, cb) {
|
||||||
if (contract.address !== undefined) {
|
if (contract.address !== undefined) {
|
||||||
this.deployedContracts[className] = contract.address;
|
this.deployedContracts[className] = contract.address;
|
||||||
|
|
||||||
//console.log("contract " + className + " at " + contractAddress);
|
|
||||||
console.log("contract " + className + " at " + contract.address);
|
console.log("contract " + className + " at " + contract.address);
|
||||||
cb();
|
cb();
|
||||||
}
|
}
|
||||||
|
@ -154,8 +134,10 @@ Deploy.prototype.deploy_a_contract = function(env, className, cb) {
|
||||||
else {
|
else {
|
||||||
console.log("deployed " + className + " at " + contractAddress);
|
console.log("deployed " + className + " at " + contractAddress);
|
||||||
_this.chainManager.addContract(className, contract.compiled.code, realArgs, contractAddress);
|
_this.chainManager.addContract(className, contract.compiled.code, realArgs, contractAddress);
|
||||||
|
if (_this.withChain) {
|
||||||
_this.chainManager.save();
|
_this.chainManager.save();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_this.deployedContracts[className] = contractAddress;
|
_this.deployedContracts[className] = contractAddress;
|
||||||
|
|
||||||
|
@ -164,9 +146,6 @@ Deploy.prototype.deploy_a_contract = function(env, className, cb) {
|
||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
|
|
||||||
//while((receipt = this.deploy_contract(contractObject, contractParams)) === false) {
|
|
||||||
// console.log("timeout... failed to deploy contract.. retrying...");
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
10
lib/index.js
10
lib/index.js
|
@ -25,13 +25,9 @@ Embark = {
|
||||||
else {
|
else {
|
||||||
this.web3 = web3;
|
this.web3 = web3;
|
||||||
}
|
}
|
||||||
this.chainManager = (new ChainManager(this.web3));
|
this.chainManager = (new ChainManager());
|
||||||
},
|
},
|
||||||
|
|
||||||
//tests: function() {
|
|
||||||
// return new Tests();
|
|
||||||
//},
|
|
||||||
|
|
||||||
startBlockchain: function(env, use_tmp) {
|
startBlockchain: function(env, use_tmp) {
|
||||||
var chain = new Blockchain(this.blockchainConfig.config(env));
|
var chain = new Blockchain(this.blockchainConfig.config(env));
|
||||||
chain.startChain(use_tmp);
|
chain.startChain(use_tmp);
|
||||||
|
@ -47,11 +43,11 @@ Embark = {
|
||||||
return chain.getStartChainCommand(use_tmp);
|
return chain.getStartChainCommand(use_tmp);
|
||||||
},
|
},
|
||||||
|
|
||||||
deployContracts: function(env, contractFiles, destFile, chainFile, withProvider, cb) {
|
deployContracts: function(env, contractFiles, destFile, chainFile, withProvider, withChain, cb) {
|
||||||
this.contractsConfig.init(contractFiles, env);
|
this.contractsConfig.init(contractFiles, env);
|
||||||
|
|
||||||
this.chainManager.loadConfigFile(chainFile)
|
this.chainManager.loadConfigFile(chainFile)
|
||||||
var deploy = new Deploy(env, contractFiles, this.blockchainConfig.config(env), this.contractsConfig, this.chainManager, this.web3);
|
var deploy = new Deploy(env, contractFiles, this.blockchainConfig.config(env), this.contractsConfig, this.chainManager, withProvider, withChain, this.web3);
|
||||||
deploy.deploy_contracts(env, function() {
|
deploy.deploy_contracts(env, function() {
|
||||||
console.log("contracts deployed; generating abi file");
|
console.log("contracts deployed; generating abi file");
|
||||||
var result = ""
|
var result = ""
|
||||||
|
|
|
@ -16,7 +16,7 @@ Test = function(cb) {
|
||||||
|
|
||||||
Embark.contractsConfig.init(files, 'development');
|
Embark.contractsConfig.init(files, 'development');
|
||||||
|
|
||||||
Embark.deployContracts('development', files, "/tmp/abi.js", "chains.json", false, function(abi) {
|
Embark.deployContracts('development', files, "/tmp/abi.js", "chains.json", false, false, function(abi) {
|
||||||
console.log("return abi");
|
console.log("return abi");
|
||||||
console.log(abi);
|
console.log(abi);
|
||||||
eval(abi);
|
eval(abi);
|
||||||
|
|
Loading…
Reference in New Issue