async function loadLang(lang_id) {
	let language_module
	const result = []
	try {
		language_module = await import(`../src/lang/${lang_id}.mjs`)
		language_module = language_module.default
	} catch (e) {
		language_module = {}
	}
	function parseObject(obj, root = '') {
		for (const [key, value] of Object.entries(obj)) {
			if (typeof value === 'string') {
				result.push(root + key)
			} else {
				parseObject(value, root + key + '.')
			}
		}
	}
	parseObject(language_module)
	return result
}

async function testLang(lang_id) {
	const baseLangFile = await loadLang('en')
	const comparedLangFile = await loadLang(lang_id)

	if (comparedLangFile.length === 0) {
		console.log(`Language file ${lang_id} doesn't exist!`)
		return
	}

	console.log('\nMissing Keys:')
	baseLangFile.forEach(key => {
		if (!comparedLangFile.includes(key)) console.log(key)
	})

	console.log('\nExtra Keys:')
	comparedLangFile.forEach(key => {
		if (!baseLangFile.includes(key)) console.log(key)
	})
}

;(async () => {
	const args = process.argv.slice(2)
	if (args.length !== 1) {
		console.log('Usage:\nyarn testlang [COUNTRY_ID]\n')
		return
	}
	console.log(`Testing language file ${args[0]}`)
	await testLang(args[0])
	console.log('')
})()
