mirror of
https://github.com/seerr-team/seerr.git
synced 2026-06-02 13:20:22 -04:00
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
#!/usr/bin/env node
|
|
/* eslint-disable @typescript-eslint/no-require-imports, no-console */
|
|
/**
|
|
* Check that i18n locale files are in sync with extracted messages.
|
|
* Runs extract script and compares en.json files; exits 1 if they differ.
|
|
*/
|
|
const { execSync } = require('child_process');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const targets = [
|
|
path.join(__dirname, '..', 'src', 'i18n', 'locale', 'en.json'),
|
|
path.join(__dirname, '..', 'server', 'i18n', 'locale', 'en.json'),
|
|
];
|
|
|
|
const backups = targets.map((p) => `${p}.bak`);
|
|
|
|
try {
|
|
targets.forEach((p, i) => fs.copyFileSync(p, backups[i]));
|
|
execSync('pnpm i18n:extract', { stdio: 'inherit' });
|
|
|
|
let outOfSync = false;
|
|
for (let i = 0; i < targets.length; i++) {
|
|
const original = fs.readFileSync(backups[i], 'utf8');
|
|
const extracted = fs.readFileSync(targets[i], 'utf8');
|
|
fs.unlinkSync(backups[i]);
|
|
|
|
if (original !== extracted) {
|
|
console.error(
|
|
`i18n messages are out of sync for ${path.basename(path.dirname(path.dirname(targets[i])))}. Please run 'pnpm i18n:extract' and commit the changes.`
|
|
);
|
|
outOfSync = true;
|
|
}
|
|
}
|
|
|
|
if (outOfSync) {
|
|
process.exit(1);
|
|
}
|
|
} catch (err) {
|
|
backups.forEach((b) => {
|
|
if (fs.existsSync(b)) fs.unlinkSync(b);
|
|
});
|
|
throw err;
|
|
}
|