Compare commits

...

2 Commits

Author SHA1 Message Date
af492cbaaa chore: cleanup 2025-10-20 11:38:09 +00:00
7868527fa0 chore: add pre-commit hook to block .po file commits 2025-10-20 11:31:19 +00:00
2 changed files with 72 additions and 0 deletions

View File

@ -1,6 +1,8 @@
SCRIPT_DIR="$(readlink -f "$(dirname "$0")")"
MONOREPO_ROOT="$(readlink -f "$SCRIPT_DIR/../")"
node "$MONOREPO_ROOT/scripts/check-po-files.cjs" || exit 1
echo "Copying .well-known/ contents"
node "$MONOREPO_ROOT/scripts/copy-wellknown.cjs"

View File

@ -0,0 +1,70 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/no-var-requires */
const { execFileSync } = require('child_process');
const isCI = process.env.CI === 'true' || process.env.CI === '1';
const isHuskyDisabled = process.env.HUSKY === '0';
if (isCI || isHuskyDisabled) {
console.log('Skipping .po file check (CI environment detected)');
process.exit(0);
}
const getStagedPoFiles = () => {
try {
const output = execFileSync(
'git',
['diff', '--cached', '--name-only', '-z', '--diff-filter=ACMR'],
{
encoding: 'utf8',
stdio: ['pipe', 'pipe', 'pipe'],
},
);
const stagedFiles = output.split('\0').filter(Boolean);
return stagedFiles.filter((file) => {
return file.startsWith('packages/lib/translations/') && file.endsWith('.po');
});
} catch (error) {
console.error('Warning: Could not check staged files:', error.message);
return [];
}
};
const unstageFiles = (files) => {
if (files.length === 0) return;
try {
try {
execFileSync('git', ['rev-parse', '--verify', 'HEAD'], {
encoding: 'utf8',
stdio: ['pipe', 'pipe', 'pipe'],
});
execFileSync('git', ['reset', 'HEAD', '--', ...files], {
encoding: 'utf8',
stdio: 'inherit',
});
} catch (headError) {
execFileSync('git', ['rm', '--cached', '--', ...files], {
encoding: 'utf8',
stdio: 'inherit',
});
}
} catch (error) {
console.error('Error unstaging files:', error.message);
}
};
const main = () => {
const poFiles = getStagedPoFiles();
if (poFiles.length > 0) {
unstageFiles(poFiles);
}
process.exit(0);
};
main();