Generate production locales using 'compare-locales'

This commit is contained in:
Peter deHaan 2017-07-31 14:34:28 -07:00
parent c9c7c3182c
commit 5effeb16d1
No known key found for this signature in database
GPG Key ID: F0FC6C01C6305097
2 changed files with 53 additions and 12 deletions

View File

@ -46,13 +46,15 @@
"license": "MPL-2.0",
"repository": "mozilla/send",
"availableLanguages": [
"en-US",
"zh-TW",
"zh-CN",
"cs",
"cy",
"de",
"dsb",
"en-US",
"es-MX",
"fr",
"fy-NL",
"de",
"hsb",
"hu",
"it",
"ja",
@ -60,19 +62,14 @@
"ms",
"nb-NO",
"nn-NO",
"pt-PT",
"pt-BR",
"pt-PT",
"ru",
"sk",
"sl",
"dsb",
"hsb",
"es-CL",
"es-ES",
"es-MX",
"sv-SE",
"tr",
"cy"
"zh-CN",
"zh-TW"
],
"scripts": {
"build": "npm-run-all build:*",
@ -80,6 +77,7 @@
"build:download": "browserify frontend/src/download.js -g uglifyify -o public/download.js",
"build:version": "node scripts/version",
"build:l10n": "cp node_modules/l20n/dist/web/l20n.min.js public",
"get-prod-locales": "node scripts/get-prod-locales",
"dev": "npm run build && npm start",
"format": "prettier '{frontend/src/,scripts/,server/,test/**/!(bundle)}*.js' 'public/*.css' --single-quote --write",
"lint": "npm-run-all lint:*",

43
scripts/get-prod-locales.js Executable file
View File

@ -0,0 +1,43 @@
const { exec } = require('child_process');
const fs = require('fs');
const pkg = require('../package.json');
const availableLanguages = pkg.availableLanguages.sort();
const compareLocales =
'compare-locales l10n.toml . `ls public/locales` --data=json';
exec(compareLocales, (err, stdout, stderr) => {
if (err) {
console.error(err);
process.exit(1);
}
const missingLocales = (current, package) =>
current.filter(locale => !package.includes(locale));
const { summary } = JSON.parse(stdout);
const locales = Object.keys(summary)
.filter(locale => {
const loc = summary[locale];
const hasMissing = loc.hasOwnProperty('missing');
const hasErrors = loc.hasOwnProperty('errors');
return !hasMissing && !hasErrors;
})
.sort();
if (locales.join(',') !== availableLanguages.join(',')) {
const missingLocales = missingLocales(locales, availableLanguages);
console.log('current 100%:', JSON.stringify(locales));
console.log('package.json:', JSON.stringify(availableLanguages));
console.log('missing prod:', JSON.stringify(missingLocales));
if (process.argv.includes('--write')) {
const pkgPath = require.resolve('../package.json');
pkg.availableLanguages = locales;
const str = JSON.stringify(pkg, null, 2) + '\n';
console.log('Updating /package.json availableLanguages');
fs.writeFileSync(pkgPath, str, 'utf-8');
}
} else {
console.log('Production locales are up to date!');
}
});