Files
tessera-ctl/.planning/quick/261009-ikt-cert-manager-umbau-mehrere-dateien-zip-f/e2e/check-cert-messages.cjs
T
schalli 76a30458fc docs(quick-261009-ikt): Cert-Manager-Umbau
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-09 17:12:10 +02:00

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}`);