mirror of https://github.com/embarklabs/embark.git
fix(blockchain/geth): create geth dev account before other accounts
This commit is contained in:
parent
6c7782c435
commit
7811211f91
|
@ -1,4 +1,5 @@
|
||||||
const async = require('async');
|
const async = require('async');
|
||||||
|
const {spawn, exec} = require('child_process');
|
||||||
const GethMiner = require('./miner');
|
const GethMiner = require('./miner');
|
||||||
const semver = require('semver');
|
const semver = require('semver');
|
||||||
const constants = require('../../constants');
|
const constants = require('../../constants');
|
||||||
|
@ -140,7 +141,7 @@ class GethClient {
|
||||||
|
|
||||||
newAccountCommand() {
|
newAccountCommand() {
|
||||||
if (!(this.config.account && this.config.account.password)) {
|
if (!(this.config.account && this.config.account.password)) {
|
||||||
console.warn(__('Your blockchain is missing a password and creating an account may fail. Please consider updating ').yellow + __('config/blockchain > account > password').cyan + __(' then re-run the command').yellow);
|
console.warn(__('Your blockchain config is missing a password and creating an account may fail. Please consider updating ').yellow + __('config/blockchain > accounts').cyan + __(' then re-run the command').yellow);
|
||||||
}
|
}
|
||||||
return this.bin + " " + this.commonOptions().join(' ') + " account new ";
|
return this.bin + " " + this.commonOptions().join(' ') + " account new ";
|
||||||
}
|
}
|
||||||
|
@ -220,10 +221,36 @@ class GethClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
initDevChain(datadir, callback) {
|
initDevChain(datadir, callback) {
|
||||||
// No specific configuration needed for the dev chain
|
exec(this.listAccountsCommand(), {}, (err, stdout, _stderr) => {
|
||||||
|
if (err || stdout === undefined || stdout.indexOf("Fatal") >= 0) {
|
||||||
|
return callback(err || stdout);
|
||||||
|
}
|
||||||
|
this.config.unlockAddressList = this.parseListAccountsCommandResultToAddressList(stdout);
|
||||||
|
if (this.config.unlockAddressList.length) {
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No accounts. We need to run the geth --dev command for it to create the dev account
|
||||||
|
const args = this.commonOptions();
|
||||||
|
args.push('--dev');
|
||||||
|
console.log(__('Creating Geth dev account. Please wait...'));
|
||||||
|
this.child = spawn(this.bin, args, {cwd: process.cwd()});
|
||||||
|
|
||||||
|
this.child.stderr.on('data', async (data) => {
|
||||||
|
data = data.toString();
|
||||||
|
if (data.indexOf('Using developer account') > -1) {
|
||||||
|
this.child.kill();
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.child.kill();
|
||||||
|
return callback(__('Geth dev command never returned a developer account'));
|
||||||
|
}, 10 * 1000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
mainCommand(address, done) {
|
mainCommand(address, done) {
|
||||||
let self = this;
|
let self = this;
|
||||||
let config = this.config;
|
let config = this.config;
|
||||||
|
|
Loading…
Reference in New Issue