42 lines
1.1 KiB
JavaScript
42 lines
1.1 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
|
|
const file_contents = fs.readFileSync(path)
|
|
const file_json = JSON.parse(file_contents)
|
|
|
|
// now we'll just blindly construct the config object from here on out
|
|
let ret = { path: path }
|
|
for(const key in file_json.keys) {
|
|
if(key == 'path') { continue } // don't overwrite the old path
|
|
else {
|
|
ret[key] = file_json[key]
|
|
}
|
|
}
|
|
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
|