lamassu-server/bin/lamassu-update-wallet-nodes
2022-02-18 20:15:39 +00:00

49 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
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
switch (status) {
case 'STARTING' || 'RUNNING' || 'STOPPED' || 'BACKOFF' || 'STOPPING' || 'EXITED' || 'FATAL':
return true
case 'UNKNOWN':
return false
default:
return false
}
}
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()