embark/lib/cmds/blockchain/geth_commands.js

122 lines
3.0 KiB
JavaScript
Raw Normal View History

var GethCommands = function(options) {
this.config = options.config;
this.env = options.env || 'development';
this.name = "Go-Ethereum (https://github.com/ethereum/go-ethereum)";
2017-02-18 13:55:33 +00:00
this.geth_bin = this.config.geth_bin || "geth";
};
2016-10-31 00:21:28 +00:00
GethCommands.prototype.commonOptions = function() {
var config = this.config;
2016-10-31 00:21:28 +00:00
var cmd = "";
if (config.networkType === 'testnet') {
cmd += "--testnet ";
} else if (config.networkType === 'olympic') {
cmd += "--olympic ";
2016-10-31 00:21:28 +00:00
} else if (config.networkType === 'custom') {
cmd += "--networkid " + config.networkId + " ";
}
if (config.datadir) {
cmd += "--datadir=\"" + config.datadir + "\" ";
}
if (config.light) {
cmd += "--light ";
}
if (config.fast) {
cmd += "--fast ";
}
if (config.account && config.account.password) {
cmd += "--password " + config.account.password + " ";
}
2016-10-31 00:21:28 +00:00
return cmd;
};
2016-10-31 00:21:28 +00:00
GethCommands.prototype.initGenesisCommmand = function() {
var config = this.config;
2017-02-18 13:55:33 +00:00
var cmd = this.geth_bin + " " + this.commonOptions();
2016-10-31 00:21:28 +00:00
if (config.genesisBlock) {
cmd += "init \"" + config.genesisBlock + "\" ";
}
return cmd;
};
2016-10-31 00:21:28 +00:00
GethCommands.prototype.newAccountCommand = function() {
2017-02-18 13:55:33 +00:00
return this.geth_bin + " " + this.commonOptions() + "account new ";
2016-10-31 00:21:28 +00:00
};
GethCommands.prototype.listAccountsCommand = function() {
2017-02-18 13:55:33 +00:00
return this.geth_bin + " " + this.commonOptions() + "account list ";
};
GethCommands.prototype.mainCommand = function(address) {
var config = this.config;
2017-02-18 13:55:33 +00:00
var cmd = this.geth_bin + " ";
2017-02-18 13:41:18 +00:00
var rpc_api = (this.config.rpcApi || ['eth', 'web3', 'net']);
cmd += this.commonOptions();
2016-10-31 00:15:57 +00:00
cmd += "--port " + config.port + " ";
cmd += "--rpc ";
cmd += "--rpcport " + config.rpcPort + " ";
cmd += "--rpcaddr " + config.rpcHost + " ";
if (config.rpcCorsDomain) {
if (config.rpcCorsDomain === '*') {
console.log('==================================');
console.log('make sure you know what you are doing');
console.log('==================================');
}
cmd += "--rpccorsdomain=\"" + config.rpcCorsDomain + "\" ";
} else {
console.log('==================================');
console.log('warning: cors is not set');
console.log('==================================');
}
if (config.nodiscover) {
cmd += "--nodiscover ";
}
2017-02-18 13:41:18 +00:00
if (config.vmdebug) {
cmd += "--vmdebug ";
}
2016-10-31 00:35:11 +00:00
cmd += "--maxpeers " + config.maxpeers + " ";
if (config.mineWhenNeeded || config.mine) {
cmd += "--mine ";
}
2017-02-18 13:24:23 +00:00
if (config.bootnodes && config.bootnodes !== "" && config.bootnodes !== []) {
cmd += "--bootnodes " + config.bootnodes;
}
if (config.whisper) {
cmd += "--shh ";
rpc_api.push('shh');
}
cmd += '--rpcapi "' + rpc_api.join(',') + '" ';
var accountAddress = config.account.address || address;
if (accountAddress) {
cmd += "--unlock=" + accountAddress + " ";
}
if (config.mineWhenNeeded) {
cmd += "js .embark/" + this.env + "/js/mine.js";
}
return cmd;
};
module.exports = GethCommands;