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
