From 10b635185d7b110f6f471290ad4389e3d2881bf0 Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Wed, 12 Jul 2017 15:34:00 +0300 Subject: [PATCH] support installing with existing volumes and droplets --- lib/blockchain/bitcoin.js | 3 +-- lib/blockchain/common.js | 19 ++++++++++++++++--- lib/blockchain/dash.js | 3 +-- lib/blockchain/install.js | 4 +++- lib/blockchain/litecoin.js | 3 +-- lib/blockchain/zcash.js | 3 +-- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/blockchain/bitcoin.js b/lib/blockchain/bitcoin.js index 2b6e9309..cfad370b 100644 --- a/lib/blockchain/bitcoin.js +++ b/lib/blockchain/bitcoin.js @@ -1,4 +1,3 @@ -const fs = require('fs') const path = require('path') const coinUtils = require('../coin-utils') @@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('BTC') function setup (dataDir) { common.firewall([coinRec.defaultPort]) const config = buildConfig() - fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config) + common.writeFile(path.resolve(dataDir, coinRec.configFile), config) const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}` common.writeSupervisorConfig(coinRec, cmd) } diff --git a/lib/blockchain/common.js b/lib/blockchain/common.js index cfd8acfb..60972928 100644 --- a/lib/blockchain/common.js +++ b/lib/blockchain/common.js @@ -12,7 +12,8 @@ module.exports = { randomPass, fetchAndInstall, logger, - isInstalledSoftware + isInstalledSoftware, + writeFile } const BINARIES = { @@ -70,7 +71,7 @@ stdout_logfile=/var/log/supervisor/${blockchain}.out.log environment=HOME="/root" ` - fs.writeFileSync(`/etc/supervisor/conf.d/${coinRec.code}.conf`, supervisorConfig) + writeFile(`/etc/supervisor/conf.d/${coinRec.code}.conf`, supervisorConfig) } function isInstalledSoftware (coinRec) { @@ -80,7 +81,7 @@ function isInstalledSoftware (coinRec) { function fetchAndInstall (coinRec) { if (isInstalledSoftware(coinRec)) return - const binaries = BINARIES[coinRec.coinRecCode] + const binaries = BINARIES[coinRec.cryptoCode] if (!binaries) throw new Error(`No such coin: ${coinRec.code}`) const url = binaries.url @@ -91,3 +92,15 @@ function fetchAndInstall (coinRec) { es(`tar -xzf ${downloadFile}`) es(`sudo cp ${binDir}/* /usr/local/bin`) } + +function writeFile (path, content) { + try { + fs.writeFileSync(path, content) + } catch (err) { + if (err.code === 'EEXIST') { + logger.info(`${path} exists, skipping.`) + } + + throw err + } +} diff --git a/lib/blockchain/dash.js b/lib/blockchain/dash.js index ab50bec8..0093540c 100644 --- a/lib/blockchain/dash.js +++ b/lib/blockchain/dash.js @@ -1,4 +1,3 @@ -const fs = require('fs') const path = require('path') const coinUtils = require('../coin-utils') @@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('DASH') function setup (dataDir) { common.firewall([coinRec.defaultPort]) const config = buildConfig() - fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config) + common.writeFile(path.resolve(dataDir, coinRec.configFile), config) const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}` common.writeSupervisorConfig(coinRec, cmd) } diff --git a/lib/blockchain/install.js b/lib/blockchain/install.js index f824e0c6..106e2ffd 100644 --- a/lib/blockchain/install.js +++ b/lib/blockchain/install.js @@ -70,8 +70,10 @@ function setupCrypto (crypto) { process.chdir(tmpDir) common.es('rm -rf *') common.fetchAndInstall(crypto) + cryptoPlugin.setup(cryptoDir) - fs.writeFileSync(installedVolumeFilePath(crypto), '') + + common.writeFile(installedVolumeFilePath(crypto), '') process.chdir(oldDir) } diff --git a/lib/blockchain/litecoin.js b/lib/blockchain/litecoin.js index cf87c51c..2e1d4ea2 100644 --- a/lib/blockchain/litecoin.js +++ b/lib/blockchain/litecoin.js @@ -1,4 +1,3 @@ -const fs = require('fs') const path = require('path') const coinUtils = require('../coin-utils') @@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('LTC') function setup (dataDir) { common.firewall([coinRec.defaultPort]) const config = buildConfig() - fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config) + common.writeFile(path.resolve(dataDir, coinRec.configFile), config) const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}` common.writeSupervisorConfig(coinRec, cmd) } diff --git a/lib/blockchain/zcash.js b/lib/blockchain/zcash.js index 3df6b067..1497f443 100644 --- a/lib/blockchain/zcash.js +++ b/lib/blockchain/zcash.js @@ -1,4 +1,3 @@ -const fs = require('fs') const path = require('path') const coinUtils = require('../coin-utils') @@ -20,7 +19,7 @@ function setup (dataDir) { es('zcash-fetch-params 2>&1') logger.info('Finished fetching proofs.') const config = buildConfig() - fs.writeFileSync(path.resolve(dataDir, 'zcash.conf'), config) + common.writeFile(path.resolve(dataDir, coinRec.configFile), config) const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}` common.writeSupervisorConfig(coinRec, cmd) }