summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-01-19 16:23:04 -0500
committerDessalines <tyhou13@gmx.com>2020-01-19 16:23:04 -0500
commit5579f4b482c0b5350a1468432522f9e16f4bf4fd (patch)
tree51e8bdb19df7df261c6cf62d487dbc0aa1906847 /ui
parent9a6d665f01fae1b5c99c3743ab89eab13b7f903b (diff)
Automatically update translation report. Fixes #439
Diffstat (limited to 'ui')
-rw-r--r--ui/package.json2
-rw-r--r--ui/translation_report.ts65
2 files changed, 43 insertions, 24 deletions
diff --git a/ui/package.json b/ui/package.json
index a2767e4a..ea6343da 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -57,7 +57,7 @@
"engineStrict": true,
"husky": {
"hooks": {
- "pre-commit": "cargo clippy --manifest-path ../server/Cargo.toml --all-targets --all-features -- -D warnings && lint-staged"
+ "pre-commit": "ts-node translation_report.ts && git add ../README.md && cargo clippy --manifest-path ../server/Cargo.toml --all-targets --all-features -- -D warnings && lint-staged"
}
},
"lint-staged": {
diff --git a/ui/translation_report.ts b/ui/translation_report.ts
index 1975cfa5..71a09559 100644
--- a/ui/translation_report.ts
+++ b/ui/translation_report.ts
@@ -8,31 +8,50 @@ import { sv } from './src/translations/sv';
import { ru } from './src/translations/ru';
import { nl } from './src/translations/nl';
import { it } from './src/translations/it';
+import fs from 'fs';
-let files = [
- { t: de, n: 'de' },
- { t: eo, n: 'eo' },
- { t: es, n: 'es' },
- { t: fr, n: 'fr' },
- { t: it, n: 'it' },
- { t: nl, n: 'nl' },
- { t: ru, n: 'ru' },
- { t: sv, n: 'sv' },
- { t: zh, n: 'zh' },
-];
-let masterKeys = Object.keys(en.translation);
-
-let report = 'lang | done | missing\n';
-report += '--- | --- | ---\n';
-
-for (let file of files) {
- let keys = Object.keys(file.t.translation);
- let pct: number = (keys.length / masterKeys.length) * 100;
- let missing = difference(masterKeys, keys);
- report += `${file.n} | ${pct.toFixed(0)}% | ${missing} \n`;
-}
+let readmePath = '../README.md';
+
+let open = '<!-- translations -->';
+let close = '<!-- translationsstop -->';
+
+let readmeTxt = fs.readFileSync(readmePath, { encoding: 'utf8' });
+
+let before = readmeTxt.split(open)[0];
+let after = readmeTxt.split(close)[1];
+
+let report = buildReport();
+
+let alteredReadmeTxt = `${before}${open}\n\n${report}\n${close}${after}`;
-console.log(report);
+fs.writeFileSync(readmePath, alteredReadmeTxt);
+
+function buildReport(): string {
+ let files = [
+ { t: de, n: 'de' },
+ { t: eo, n: 'eo' },
+ { t: es, n: 'es' },
+ { t: fr, n: 'fr' },
+ { t: it, n: 'it' },
+ { t: nl, n: 'nl' },
+ { t: ru, n: 'ru' },
+ { t: sv, n: 'sv' },
+ { t: zh, n: 'zh' },
+ ];
+ let masterKeys = Object.keys(en.translation);
+
+ let report = 'lang | done | missing\n';
+ report += '--- | --- | ---\n';
+
+ for (let file of files) {
+ let keys = Object.keys(file.t.translation);
+ let pct: number = (keys.length / masterKeys.length) * 100;
+ let missing = difference(masterKeys, keys);
+ report += `${file.n} | ${pct.toFixed(0)}% | ${missing} \n`;
+ }
+
+ return report;
+}
function difference(a: Array<string>, b: Array<string>): Array<string> {
return a.filter(x => !b.includes(x));