#!/usr/bin/env node require('../lib/environment-helper') const _ = require('lodash/fp') const common = require('../lib/blockchain/common') const { utils: coinUtils } = require('@lamassu/coins') const cryptos = coinUtils.cryptoCurrencies() const PLUGINS = { BTC: require('../lib/blockchain/bitcoin.js'), BCH: require('../lib/blockchain/bitcoincash.js'), DASH: require('../lib/blockchain/dash.js'), ETH: require('../lib/blockchain/ethereum.js'), LTC: require('../lib/blockchain/litecoin.js'), XMR: require('../lib/blockchain/monero.js'), ZEC: require('../lib/blockchain/zcash.js') } function plugin (crypto) { const plugin = PLUGINS[crypto.cryptoCode] if (!plugin) throw new Error(`No such plugin: ${crypto.cryptoCode}`) return plugin } function isWalletNodeInstalled (status) { // From http://supervisord.org/subprocess.html#process-states return _.includes(status, ['STARTING', 'RUNNING', 'STOPPED', 'BACKOFF', 'STOPPING', 'EXITED', 'FATAL']) } function run () { _.forEach((crypto) => { if (!_.includes(crypto.cryptoCode, _.keys(PLUGINS))) return const cryptoPlugin = plugin(crypto) const status = common.es(`sudo supervisorctl status ${crypto.code} | awk '{ print $2 }'`).trim() if (!isWalletNodeInstalled(status)) return cryptoPlugin.updateCore(common.getBinaries(crypto.cryptoCode), _.includes(status, ['RUNNING', 'STARTING'])) }, cryptos) } run()