////////////////////////////////////////////////////////////////////////////////
//
// Locale verification script
//
// usage:
//
//     node app/scripts/verify-locale-strings.js <locale>
//
// will check the given locale against the strings in english
//
////////////////////////////////////////////////////////////////////////////////

var fs = require('fs')
var path = require('path')

console.log('Locale Verification')

var locale = process.argv[2]
if (!locale || locale == '') {
	console.log('Must enter a locale as argument. exitting')
	process.exit(1)
}

console.log("verifying for locale " + locale)

localeFilePath = path.join(process.cwd(), 'app', '_locales', locale, 'messages.json')
try {
	localeObj = JSON.parse(fs.readFileSync(localeFilePath, 'utf8'));
} catch (e) {
	if(e.code == 'ENOENT') {
		console.log('Locale file not found') 
	} else {
		console.log('Error opening your locale file: ', e)
	}
	process.exit(1)
}

englishFilePath = path.join(process.cwd(), 'app', '_locales', 'en', 'messages.json')
try {
	englishObj = JSON.parse(fs.readFileSync(englishFilePath, 'utf8'));
} catch (e) {
	if(e.code == 'ENOENT') {
		console.log("English File not found") 
	} else {
		console.log("Error opening english locale file: ", e)
	}
	process.exit(1)
}

console.log('\tverifying whether all your locale strings are contained in the english one')

var counter = 0
var foundErrorA = false
var notFound = [];
Object.keys(localeObj).forEach(function(key){
	if (!englishObj[key]) {
		foundErrorA = true
		notFound.push(key)
	}
	counter++
})

if (foundErrorA) {
	console.log('\nThe following string(s) is(are) not found in the english locale:')
	notFound.forEach(function(key) {
		console.log(key)
	})
} else {
	console.log('\tall ' + counter +' strings declared in your locale were found in the english one')
}

console.log('\n\tverifying whether your locale contains all english strings')

var counter = 0
var foundErrorB = false
var notFound = [];
Object.keys(englishObj).forEach(function(key){
	if (!localeObj[key]) {
		foundErrorB = true
		notFound.push(key)
	}
	counter++
})

if (foundErrorB) {
	console.log('\nThe following string(s) is(are) not found in the your locale:')
	notFound.forEach(function(key) {
		console.log(key)
	})
} else {
	console.log('\tall ' + counter +' english strings were found in your locale!')
}

if (!foundErrorA && !foundErrorB) {
	console.log('You are good to go')
}