summaryrefslogtreecommitdiff
path: root/packages/pogen
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-02-16 16:31:36 +0100
committerFlorian Dold <florian@dold.me>2022-02-16 16:31:45 +0100
commit54d5cc02d1a7c54758f3a391385e1f8684fde108 (patch)
treed9c983d3ac0ed2d10c4225d3460574e806ba6cf8 /packages/pogen
parent22323c082d70e1ad6e0ffde509c644a6532b9fd9 (diff)
downloadwallet-core-54d5cc02d1a7c54758f3a391385e1f8684fde108.tar.gz
wallet-core-54d5cc02d1a7c54758f3a391385e1f8684fde108.tar.bz2
wallet-core-54d5cc02d1a7c54758f3a391385e1f8684fde108.zip
pogen: implement merge and emit subcommands
Diffstat (limited to 'packages/pogen')
-rw-r--r--packages/pogen/package.json3
-rw-r--r--packages/pogen/src/po2ts.ts6
-rw-r--r--packages/pogen/src/pogen.ts27
3 files changed, 31 insertions, 5 deletions
diff --git a/packages/pogen/package.json b/packages/pogen/package.json
index 04c7ba1c0..5f6b99664 100644
--- a/packages/pogen/package.json
+++ b/packages/pogen/package.json
@@ -15,6 +15,7 @@
"typescript": "^4.5.5"
},
"dependencies": {
- "@types/node": "^17.0.17"
+ "@types/node": "^17.0.17",
+ "glob": "^7.2.0"
}
}
diff --git a/packages/pogen/src/po2ts.ts b/packages/pogen/src/po2ts.ts
index ac85b9b76..e11443f4f 100644
--- a/packages/pogen/src/po2ts.ts
+++ b/packages/pogen/src/po2ts.ts
@@ -22,12 +22,10 @@
import * as po2json from "po2json";
import * as fs from "fs";
import * as path from "path";
+import glob = require("glob");
export function po2ts(): void {
- const files = fs
- .readdirSync("./src/i18n")
- .filter((x) => x.endsWith(".po"))
- .map((x) => path.join("./src/i18n/", x));
+ const files = glob.sync("src/i18n/*.po");
if (files.length === 0) {
console.error("no .po files found in src/i18n/");
diff --git a/packages/pogen/src/pogen.ts b/packages/pogen/src/pogen.ts
index 7d128ce7a..72b7c81d7 100644
--- a/packages/pogen/src/pogen.ts
+++ b/packages/pogen/src/pogen.ts
@@ -1,4 +1,8 @@
import { potextract } from "./potextract.js";
+import * as child_process from "child_process";
+import * as fs from "fs";
+import glob = require("glob");
+import { po2ts } from "./po2ts.js";
function usage(): never {
console.log("usage: pogen <extract|merge|emit>");
@@ -14,6 +18,29 @@ export function main() {
case "extract":
potextract();
break;
+ case "merge": {
+ const packageJson = JSON.parse(
+ fs.readFileSync("./package.json", { encoding: "utf-8" }),
+ );
+
+ const poDomain = packageJson.pogen?.domain;
+ if (!poDomain) {
+ console.error("missing 'pogen.domain' field in package.json");
+ process.exit(1);
+ }
+ const files = glob.sync("src/i18n/*.po");
+ console.log(files);
+ for (const f of files) {
+ console.log(`merging ${f}`);
+ child_process.execSync(
+ `msgmerge -o '${f}' '${f}' 'src/i18n/${poDomain}.pot'`,
+ );
+ }
+ break;
+ }
+ case "emit":
+ po2ts();
+ break;
default:
console.error(`unknown subcommand '${subcommand}'`);
usage();