diff options
author | Florian Dold <florian@dold.me> | 2022-02-16 16:31:36 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-02-16 16:31:45 +0100 |
commit | 54d5cc02d1a7c54758f3a391385e1f8684fde108 (patch) | |
tree | d9c983d3ac0ed2d10c4225d3460574e806ba6cf8 /packages/pogen | |
parent | 22323c082d70e1ad6e0ffde509c644a6532b9fd9 (diff) |
pogen: implement merge and emit subcommands
Diffstat (limited to 'packages/pogen')
-rw-r--r-- | packages/pogen/package.json | 3 | ||||
-rw-r--r-- | packages/pogen/src/po2ts.ts | 6 | ||||
-rw-r--r-- | packages/pogen/src/pogen.ts | 27 |
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(); |