mirror of https://github.com/embarklabs/embark.git
add flag to include provider in abi; update spec
This commit is contained in:
parent
95823a8e54
commit
c550b688d3
|
@ -1,7 +1,14 @@
|
|||
var Embark = require('embark-framework');
|
||||
var ethersim = require('ethersim');
|
||||
var web3 = require('web3');
|
||||
Embark.init();
|
||||
|
||||
var Manager = ethersim.Manager;
|
||||
var Provider = ethersim.Provider;
|
||||
|
||||
var manager = new Manager();
|
||||
web3.setProvider(new Provider(manager));
|
||||
|
||||
Embark.init(web3);
|
||||
Embark.blockchainConfig.loadConfigFile('config/blockchain.yml');
|
||||
Embark.contractsConfig.loadConfigFile('config/contracts.yml');
|
||||
|
||||
|
@ -9,29 +16,34 @@ var files = ["app/contracts/simple_storage.sol"];
|
|||
|
||||
Embark.contractsConfig.init(files, 'development');
|
||||
|
||||
var Manager = ethersim.Manager;
|
||||
var Provider = ethersim.Provider;
|
||||
|
||||
console.log("initializing");
|
||||
var manager = new Manager();
|
||||
|
||||
web3.setProvider(new Provider(manager));
|
||||
abi = Embark.deployContracts('development', files, "/tmp/abi.js", "chains.json", web3);
|
||||
console.log(abi);
|
||||
eval(abi);
|
||||
|
||||
describe("SimpleStorage", function() {
|
||||
beforeAll(function() {
|
||||
SimpleStorage = EmbarkSpec.request("SimpleStorage", [150]);
|
||||
beforeAll(function(done) {
|
||||
Embark.deployContracts('development', files, "/tmp/abi.js", "chains.json", false, function(abi) {
|
||||
console.log("return abi");
|
||||
console.log(abi);
|
||||
eval(abi);
|
||||
done();
|
||||
});
|
||||
//SimpleStorage = EmbarkSpec.request("SimpleStorage", [150]);
|
||||
});
|
||||
|
||||
it("should set constructor value", function() {
|
||||
expect(SimpleStorage.storedData()).toEqual('150');
|
||||
it("should set constructor value", function(done) {
|
||||
SimpleStorage.storedData(function(err, result) {
|
||||
expect(result.toNumber()).toEqual(100);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("set storage value", function() {
|
||||
SimpleStorage.set(100);
|
||||
expect(SimpleStorage.get()).toEqual('100');
|
||||
it("set storage value", function(done) {
|
||||
SimpleStorage.set(150, function() {
|
||||
SimpleStorage.get(function(err, result) {
|
||||
console.log(arguments);
|
||||
expect(result.toNumber()).toEqual(150);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
})
|
||||
|
|
|
@ -2,11 +2,11 @@ var fs = require('fs');
|
|||
var web3 = require('web3');
|
||||
var sha3_256 = require('js-sha3').sha3_256;
|
||||
|
||||
ChainManager = function() {
|
||||
ChainManager = function(_web3) {
|
||||
this.chainManagerConfig = {};
|
||||
this.currentChain = {};
|
||||
this.file = "";
|
||||
this.web3 = null;
|
||||
this.web3 = _web3;
|
||||
}
|
||||
|
||||
ChainManager.prototype.loadConfigFile = function(filename) {
|
||||
|
@ -26,9 +26,11 @@ ChainManager.prototype.loadConfig = function(config) {
|
|||
};
|
||||
|
||||
ChainManager.prototype.init = function(env, config) {
|
||||
web3.setProvider(new web3.providers.HttpProvider("http://" + config.rpcHost + ":" + config.rpcPort));
|
||||
if (this.web3 === undefined) {
|
||||
web3.setProvider(new web3.providers.HttpProvider("http://" + config.rpcHost + ":" + config.rpcPort));
|
||||
}
|
||||
|
||||
var block = web3.eth.getBlock(0);
|
||||
var block = this.web3.eth.getBlock(0);
|
||||
if(!block){
|
||||
throw new Error("Cannot get the genesis block, is embark blockchain running ?");
|
||||
}
|
||||
|
@ -39,7 +41,7 @@ ChainManager.prototype.init = function(env, config) {
|
|||
}
|
||||
|
||||
this.currentChain = this.chainManagerConfig[chainId];
|
||||
this.web3 = web3;
|
||||
//this.web3 = web3;
|
||||
}
|
||||
|
||||
ChainManager.prototype.addContract = function(contractName, code, args, address) {
|
||||
|
|
|
@ -10,7 +10,10 @@ sleep = function sleep(ms) {
|
|||
while (new Date().getTime() < start + ms);
|
||||
}
|
||||
|
||||
Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainManager) {
|
||||
Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainManager, _web3) {
|
||||
if (_web3 !== undefined) {
|
||||
web3 = _web3;
|
||||
}
|
||||
//this.blockchainConfig = (new Config.Blockchain()).loadConfigFile('config/blockchain.yml').config(env);
|
||||
this.blockchainConfig = blockchainConfig;
|
||||
this.chainManager = chainManager;
|
||||
|
@ -22,7 +25,9 @@ Deploy = function(env, contractFiles, blockchainConfig, contractsConfig, chainMa
|
|||
this.deployedContracts = {};
|
||||
|
||||
try {
|
||||
web3.setProvider(new web3.providers.HttpProvider("http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort));
|
||||
if (_web3 === undefined) {
|
||||
web3.setProvider(new web3.providers.HttpProvider("http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort));
|
||||
}
|
||||
primaryAddress = web3.eth.coinbase;
|
||||
web3.eth.defaultAccount = primaryAddress;
|
||||
} catch (e) {
|
||||
|
@ -185,14 +190,16 @@ Deploy.prototype.execute_cmds = function(cmds) {
|
|||
}
|
||||
}
|
||||
|
||||
Deploy.prototype.generate_abi_file = function(web3) {
|
||||
var result;
|
||||
Deploy.prototype.generate_provider_file = function() {
|
||||
var result = "";
|
||||
result = "web3.setProvider(new web3.providers.HttpProvider('http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort + "'));";
|
||||
result += "web3.eth.defaultAccount = web3.eth.accounts[0];";
|
||||
|
||||
result = "";
|
||||
if (web3 === undefined) {
|
||||
result = "web3.setProvider(new web3.providers.HttpProvider('http://" + this.blockchainConfig.rpcHost + ":" + this.blockchainConfig.rpcPort + "'));";
|
||||
result += "web3.eth.defaultAccount = web3.eth.accounts[0];";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Deploy.prototype.generate_abi_file = function() {
|
||||
var result = "";
|
||||
|
||||
for(className in this.deployedContracts) {
|
||||
var deployedContract = this.deployedContracts[className];
|
||||
|
|
20
lib/index.js
20
lib/index.js
|
@ -19,11 +19,17 @@ var Compiler = require('./compiler.js');
|
|||
var ChainManager = require('./chain_manager.js');
|
||||
|
||||
Embark = {
|
||||
init: function() {
|
||||
init: function(_web3) {
|
||||
this.blockchainConfig = (new Config.Blockchain());
|
||||
this.compiler = (new Compiler(this.blockchainConfig));
|
||||
this.contractsConfig = (new Config.Contracts(this.blockchainConfig, this.compiler));
|
||||
this.chainManager = (new ChainManager());
|
||||
if (_web3 !== undefined) {
|
||||
this.web3 = _web3;
|
||||
}
|
||||
else {
|
||||
this.web3 = web3;
|
||||
}
|
||||
this.chainManager = (new ChainManager(this.web3));
|
||||
},
|
||||
|
||||
//tests: function() {
|
||||
|
@ -45,14 +51,18 @@ Embark = {
|
|||
return chain.getStartChainCommand(use_tmp);
|
||||
},
|
||||
|
||||
deployContracts: function(env, contractFiles, destFile, chainFile, cb) {
|
||||
deployContracts: function(env, contractFiles, destFile, chainFile, withProvider, cb) {
|
||||
this.contractsConfig.init(contractFiles, env);
|
||||
|
||||
this.chainManager.loadConfigFile(chainFile)
|
||||
var deploy = new Deploy(env, contractFiles, this.blockchainConfig.config(env), this.contractsConfig, this.chainManager);
|
||||
var deploy = new Deploy(env, contractFiles, this.blockchainConfig.config(env), this.contractsConfig, this.chainManager, this.web3);
|
||||
deploy.deploy_contracts(env, function() {
|
||||
console.log("contracts deployed; generating abi file");
|
||||
var result = deploy.generate_abi_file();
|
||||
var result = ""
|
||||
if (withProvider) {
|
||||
result += deploy.generate_provider_file();
|
||||
}
|
||||
result += deploy.generate_abi_file();
|
||||
cb(result);
|
||||
});
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue