pogen: implement merge and emit subcommands
This commit is contained in:
parent
22323c082d
commit
54d5cc02d1
@ -15,6 +15,7 @@
|
||||
"typescript": "^4.5.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": "^17.0.17"
|
||||
"@types/node": "^17.0.17",
|
||||
"glob": "^7.2.0"
|
||||
}
|
||||
}
|
||||
|
@ -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/");
|
||||
|
@ -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();
|
||||
|
@ -150,10 +150,12 @@ importers:
|
||||
packages/pogen:
|
||||
specifiers:
|
||||
'@types/node': ^17.0.17
|
||||
glob: ^7.2.0
|
||||
po2json: ^0.4.5
|
||||
typescript: ^4.5.5
|
||||
dependencies:
|
||||
'@types/node': 17.0.17
|
||||
glob: 7.2.0
|
||||
devDependencies:
|
||||
po2json: 0.4.5
|
||||
typescript: 4.5.5
|
||||
@ -8201,7 +8203,6 @@ packages:
|
||||
|
||||
/balanced-match/1.0.2:
|
||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||
dev: true
|
||||
|
||||
/base/0.11.2:
|
||||
resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
|
||||
@ -8356,7 +8357,6 @@ packages:
|
||||
dependencies:
|
||||
balanced-match: 1.0.2
|
||||
concat-map: 0.0.1
|
||||
dev: true
|
||||
|
||||
/braces/2.3.2:
|
||||
resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
|
||||
@ -9196,7 +9196,6 @@ packages:
|
||||
|
||||
/concat-map/0.0.1:
|
||||
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
||||
dev: true
|
||||
|
||||
/concat-stream/1.6.2:
|
||||
resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
|
||||
@ -11769,7 +11768,6 @@ packages:
|
||||
|
||||
/fs.realpath/1.0.0:
|
||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||
dev: true
|
||||
|
||||
/fsevents/1.2.13:
|
||||
resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
|
||||
@ -11974,7 +11972,6 @@ packages:
|
||||
minimatch: 3.0.5
|
||||
once: 1.4.0
|
||||
path-is-absolute: 1.0.1
|
||||
dev: true
|
||||
|
||||
/global-dirs/3.0.0:
|
||||
resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==}
|
||||
@ -12655,7 +12652,6 @@ packages:
|
||||
dependencies:
|
||||
once: 1.4.0
|
||||
wrappy: 1.0.2
|
||||
dev: true
|
||||
|
||||
/inherits/2.0.1:
|
||||
resolution: {integrity: sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=}
|
||||
@ -12667,7 +12663,6 @@ packages:
|
||||
|
||||
/inherits/2.0.4:
|
||||
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
||||
dev: true
|
||||
|
||||
/ini/1.3.8:
|
||||
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
|
||||
@ -14169,7 +14164,6 @@ packages:
|
||||
resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==}
|
||||
dependencies:
|
||||
brace-expansion: 1.1.11
|
||||
dev: true
|
||||
|
||||
/minimist/1.2.5:
|
||||
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
||||
@ -14754,7 +14748,6 @@ packages:
|
||||
resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
|
||||
dependencies:
|
||||
wrappy: 1.0.2
|
||||
dev: true
|
||||
|
||||
/onetime/5.1.2:
|
||||
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
||||
@ -15162,7 +15155,6 @@ packages:
|
||||
/path-is-absolute/1.0.1:
|
||||
resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/path-key/2.0.1:
|
||||
resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=}
|
||||
@ -19951,7 +19943,6 @@ packages:
|
||||
|
||||
/wrappy/1.0.2:
|
||||
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
|
||||
dev: true
|
||||
|
||||
/write-file-atomic/3.0.3:
|
||||
resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
|
||||
|
Loading…
Reference in New Issue
Block a user