climate-plots-config
Version:
76 lines (66 loc) • 2 kB
JavaScript
const fs = require('fs');
const path = require('path');
const { readdirSync } = require('fs')
const $ = require('jquery');
const getDirectories = source =>
readdirSync(source, { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name)
const dirname = __dirname
const dir = getDirectories(dirname)
console.log("Language Dirs")
console.log(dir)
var dirs = {};
dir.forEach(lang => {
dirs[lang] = readdirSync(`${dirname}/${lang}`, { withFileTypes: true })
.filter(dirent => !dirent.isDirectory())
.map(dirent => dirent.name)
.filter(file => (path.extname(file) == ".json"))
// console.log(`Language Directory contents ${lang}`)
// console.log(dirs[lang])
})
var rec = (json) => {
Object.keys(json).forEach(key => {
if(typeof json[key] === 'object'){
json[key] = rec(json[key])
}else{
json[key] = "";
// console.log(typeof json[key])
}
})
return json
}
var reCompare = (file1, file2) => {
Object.keys(file2).filter(key => file1[key] == undefined).forEach(key => {
if(typeof file2[key] == `object`){
file1[key] = {};
}else{
file1[key] = file2[key];
}
})
Object.keys(file1).forEach(key => {
if(typeof file1[key] == `object`){
if(file2[key] != undefined){
file1[key] = reCompare(file1[key], file2[key] != undefined ? file2[key] : {})
}else{
delete file1[key];
}
}else if(file2[key] == undefined){
delete file1[key]
}
})
return file1
}
dirs[`default`].forEach(fileName => {
var path = `./default/${fileName}`;
var file = require(path)
var emptyFile = rec(file);
var newfile = JSON.stringify(emptyFile, null, 2);
fs.writeFileSync(`./charts/lang/default/${fileName}`, newfile);
dir.filter(each => each != `default`).forEach((lang) => {
let tmp = (fs.existsSync(`${__dirname}/${lang}/${fileName}`) ? require(`./${lang}/${fileName}`) : {})
tmp = reCompare(tmp, file);
var newTmp = JSON.stringify(tmp, null, 2);
fs.writeFileSync(`./charts/lang/${lang}/${fileName}`, newTmp);
})
})