lamassu-server/lib/options-loader.js
2022-04-19 22:47:36 +01:00

66 lines
1.7 KiB
JavaScript

const fs = require('fs')
const path = require('path')
const os = require('os')
const argv = require('minimist')(process.argv.slice(2))
const _ = require('lodash/fp')
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })
const DATABASE = process.env.LAMASSU_DB ?? 'PROD'
const dbMapping = psqlConf => ({
STRESS_TEST: _.replace('lamassu', 'lamassu_stress', psqlConf),
PAZUZ: _.replace('lamassu', 'lamassu_pazuz', psqlConf),
RELEASE: _.replace('lamassu', 'lamassu_release', psqlConf),
DEV: _.replace('lamassu', 'lamassu', psqlConf),
PROD: _.replace('lamassu', 'lamassu', psqlConf)
})
/**
* @return {{path: string, opts: any}}
*/
function load () {
if (process.env.LAMASSU_CONFIG) {
const configPath = process.env.LAMASSU_CONFIG
return {
path: configPath,
opts: JSON.parse(fs.readFileSync(configPath))
}
}
if (argv.f) {
const configPath = argv.f
return {
path: configPath,
opts: JSON.parse(fs.readFileSync(configPath))
}
}
try {
const globalConfigPath = path.resolve('/etc', 'lamassu', 'lamassu.json')
const config = {
path: globalConfigPath,
opts: JSON.parse(fs.readFileSync(globalConfigPath))
}
config.opts.postgresql = dbMapping(config.opts.postgresql)[DATABASE]
return config
} catch (_) {
try {
const homeConfigPath = path.resolve(os.homedir(), '.lamassu', 'lamassu.json')
const config = {
path: homeConfigPath,
opts: JSON.parse(fs.readFileSync(homeConfigPath))
}
config.opts.postgresql = dbMapping(config.opts.postgresql)[DATABASE]
return config
} catch (_) {
console.error("Couldn't open lamassu.json config file.")
process.exit(1)
}
}
}
module.exports = load