0
1
Fork 0
hedera-web-mindshore/utils/extract-locale.js

84 lines
1.5 KiB
JavaScript
Executable File

#!/usr/bin/node
var glob = require('glob');
var fs = require('fs-extra');
var path = require('path');
var archiver = require('archiver');
let lang = process.argv[2];
if (lang == null)
{
let baseName = path.basename(process.argv[1]);
console.log(`Usage: ${baseName} language_code`);
process.exit(1);
}
let nTasks;
let projectDir;
(async () => {
await fs.remove(lang);
projectDir = await fs.realpath(`${__dirname}/..`);
projectDir = realPath;
let len = projectDir.length + 1;
glob(`${projectDir}/**/locale/`, async (err, localeDirs) => {
if (err) throw err;
for (let localeDir of localeDirs) {
localeDir = localeDir.substr(len)
if (/^node_modules\//.test (localeDir))
continue;
await exportLocale(localeDir);
}
nTasks = localeDirs.length;
});
})();
async function exportLocale (localeDir) {
let dstDir = `${lang}/${localeDir}`;
try {
await fs.mkdirp(dstDir);
let src, dst;
src = `${projectDir}/${localeDir}/en.json`;
dst = `${dstDir}/en.json`;
fs.copy(src, dst, onTaskEnd);
src = `${projectDir}/${localeDir}/${lang}.json`;
dst = `${dstDir}/${lang}.json`;
fs.copy(src, dst, onTaskEnd);
nTasks += 2;
}
catch (e) {
console.log(err);
}
nTasks--;
if (nTasks > 0) return;
let output = fs.createWriteStream(`${lang}.zip`);
output.on ('close', () =>{
fs.remove(lang);
console.log ('Export finalized!');
});
let archive = archiver('zip', {
zlib: { level: 9 }
});
archive.on ('error', err => {
throw err;
});
archive.pipe(output);
archive.directory(lang);
archive.finalize();
}