add custom datadir option.

This commit is contained in:
Christopher Jeffrey 2014-10-16 13:53:47 -07:00
parent fd1e193106
commit ef0bfa14eb
3 changed files with 54 additions and 4 deletions

View File

@ -7,13 +7,21 @@
process.title = 'bitcoind.js';
var util = require('util');
var fs = require('fs');
var argv = require('optimist').argv;
var rimraf = require('rimraf');
/**
* bitcoind
*/
var bitcoind = require('../')();
if (fs.existsSync(process.env.HOME + '/.libbitcoind-example')) {
rimraf.sync(process.env.HOME + '/.libbitcoind-example');
}
var bitcoind = require('../')({
directory: '~/.libbitcoind-example'
});
var genesisBlock = '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f';
var genesisTx = '0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';

View File

@ -8,6 +8,8 @@ var net = require('net');
var EventEmitter = require('events').EventEmitter;
var bitcoindjs = require('../build/Release/bitcoindjs.node');
var util = require('util');
var fs = require('fs');
var mkdirp = require('mkdirp');
/**
* Bitcoin
@ -28,9 +30,37 @@ function Bitcoin(options) {
EventEmitter.call(this);
this.options = options;
this.options = options || {};
this.wallet = Wallet;
if (typeof this.options === 'string') {
this.options = { datadir: this.options };
}
if (this.options.directory) {
this.options.datadir = this.options.directory;
delete this.options.directory;
}
this.options.datadir = this.options.datadir.replace(/^~/, process.env.HOME);
this.config = this.datadir + '/bitcoin.conf';
if (!fs.existsSync(this.options.datadir)) {
mkdirp.sync(this.options.datadir);
}
if (!fs.existsSync(this.config)) {
var password = Math.random().toString(36).slice(2)
+ Math.random().toString(36).slice(2)
+ Math.random().toString(36).slice(2);
fs.writeFileSync(this.config, ''
+ 'rpcuser=bitcoinrpc\n'
+ 'rpcpassword=' + password + '\n'
+ '\n'
);
}
Bitcoin.global = this;
Object.keys(exports).forEach(function(key) {
@ -65,8 +95,13 @@ Bitcoin.prototype.start = function(options, callback) {
if (!callback) {
callback = options;
options = null;
}
if (!options) {
options = {};
}
if (!callback) {
callback = utils.NOOP;
}
@ -82,6 +117,12 @@ Bitcoin.prototype.start = function(options, callback) {
var exitCaught = none;
var errorCaught = none;
Object.keys(this.options).forEach(function(key) {
if (options[key] == null) {
options[key] = self.options[key];
}
});
this.log_pipe = bitcoindjs.start(options, function(err, status) {
self._started = true;

View File

@ -18,10 +18,11 @@
],
"dependencies": {
"nan": "1.3.0",
"bn.js": "^0.10.0"
"mkdirp": "0.5.0"
},
"devDependencies": {
"mocha": "~1.16.2",
"optimist": "0.6.0"
"optimist": "0.6.0",
"rimraf": "2.2.8"
}
}