fix deployment

This commit is contained in:
Iuri Matias 2015-10-09 13:20:35 -04:00
parent a7da9bc3c5
commit 38445c9e7f
4 changed files with 17 additions and 49 deletions

View File

@ -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) {

View File

@ -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...");
//}
} }
} }
}; };

View File

@ -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 = ""

View File

@ -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);