freechat/freechat-client/src/config.js

49 lines
1.2 KiB
JavaScript

const { ArgumentParser } = require('argparse')
const fs = require('fs')
/**
* @param {ArgumentParset} parser
* @returns {Config} { path }
*/
function get_config(parser) {
const a = parser.parse_args()
const defaultcfg = `${process.env.HOME || process.env.USERPROFILE}/.config/freechat/config.json`
// we'll just assume that the config is there as per the installation process
const path = (a['config']) ? a['config'] : defaultcfg
let ret = { path: path }
fs.readFile(path, (err, data) => {
if(err) {
console.log('No valid config found')
process.exit()
}
const file_json = JSON.parse(data)
for(const key of Object.keys(file_json)) {
if(key == 'path') { continue } // don't overwrite the old path
else {
ret[key] = file_json[key]
}
}
})
// now we'll just blindly construct the config object from here on out
return ret
}
/**
* Loads the parse with the various arguments that the program takes
* @param {ArgumentParser} parser
*/
function load_parser() {
const parser = new ArgumentParser({
description: 'Freechat Electron Client'
})
parser.add_argument('-c', '--config', {help: 'Specify config path'})
return parser
}
exports.load_parser = load_parser
exports.get_config = get_config