76a30458fc
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
#!/usr/bin/env node
|
|
// Nachrichten-Pruefung fuer den Zertifikat-Manager (quick-261009-ikt), keine Abhaengigkeiten.
|
|
// Aufruf: node check-cert-messages.cjs <Mindestanzahl Schluessel>
|
|
// Prueft: gleiche Schluessel in de.json und en.json, Mindestanzahl, certManager.title vorhanden,
|
|
// keine Wörter zu Mandanten oder Lizenzen, keine Pfeil- und Mittelpunkt-Zeichen.
|
|
const { execFileSync } = require('node:child_process');
|
|
const { readFileSync } = require('node:fs');
|
|
const { join } = require('node:path');
|
|
|
|
const root = execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf8' }).trim();
|
|
const min = Number(process.argv[2] ?? 0);
|
|
|
|
function flatten(value, prefix, out) {
|
|
if (value && typeof value === 'object') {
|
|
for (const [key, inner] of Object.entries(value)) flatten(inner, `${prefix}.${key}`, out);
|
|
} else {
|
|
out.set(prefix, String(value));
|
|
}
|
|
return out;
|
|
}
|
|
|
|
function load(name) {
|
|
const data = JSON.parse(readFileSync(join(root, 'apps/web/src/messages', name), 'utf8'));
|
|
return flatten(data.certManager ?? {}, 'certManager', new Map());
|
|
}
|
|
|
|
const de = load('de.json');
|
|
const en = load('en.json');
|
|
|
|
const onlyDe = [...de.keys()].filter((k) => !en.has(k));
|
|
const onlyEn = [...en.keys()].filter((k) => !de.has(k));
|
|
if (onlyDe.length || onlyEn.length) {
|
|
console.error(`key mismatch: only de [${onlyDe.join(', ')}] only en [${onlyEn.join(', ')}]`);
|
|
process.exit(1);
|
|
}
|
|
if (de.size < min) {
|
|
console.error(`too few keys: ${de.size} < ${min}`);
|
|
process.exit(1);
|
|
}
|
|
if (!de.has('certManager.title') || !en.has('certManager.title')) {
|
|
console.error('title missing');
|
|
process.exit(1);
|
|
}
|
|
const bad = /mandant|tenant|lizenz|licens|→|·/i;
|
|
for (const map of [de, en]) {
|
|
for (const value of map.values()) {
|
|
if (bad.test(value)) {
|
|
console.error(`bad text: ${value}`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
}
|
|
console.log(`messages ok ${de.size}`);
|