forked from public/foundryvtt-wh4-lang-fr-fr
104 lines
4.0 KiB
JavaScript
104 lines
4.0 KiB
JavaScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const WFRP4E_SCRIPTS = '/home/morr/work/foundryvtt/WFRP4e-FoundryVTT/scripts';
|
|
const FR_SCRIPTS = '/home/morr/work/foundryvtt/foundryvtt-wh4-lang-fr-fr/scripts';
|
|
const REVIEW_FILE = path.join(__dirname, 'scripts-to-review.json');
|
|
const REPORT_FILE = path.join(__dirname, 'review-comparison.md');
|
|
|
|
const scriptsToReview = JSON.parse(fs.readFileSync(REVIEW_FILE, 'utf-8'));
|
|
|
|
let report = `# Scripts nécessitant révision manuelle\n\n`;
|
|
report += `Total de scripts: ${scriptsToReview.length}\n\n`;
|
|
report += `Ces scripts contiennent des traductions en français mais ont été modifiés dans WFRP4E.\n`;
|
|
report += `Ils nécessitent une révision manuelle pour intégrer les changements tout en préservant les traductions.\n\n`;
|
|
report += `---\n\n`;
|
|
|
|
scriptsToReview.forEach(({file}, index) => {
|
|
const wfrp4ePath = path.join(WFRP4E_SCRIPTS, file);
|
|
const frPath = path.join(FR_SCRIPTS, file);
|
|
|
|
const wfrp4eContent = fs.readFileSync(wfrp4ePath, 'utf-8');
|
|
const frContent = fs.readFileSync(frPath, 'utf-8');
|
|
|
|
report += `## ${index + 1}. ${file}\n\n`;
|
|
|
|
// Extraire les différences notables
|
|
const wfrp4eLines = wfrp4eContent.split('\n').length;
|
|
const frLines = frContent.split('\n').length;
|
|
|
|
report += `- **Lignes WFRP4E**: ${wfrp4eLines}\n`;
|
|
report += `- **Lignes FR**: ${frLines}\n`;
|
|
report += `- **Différence**: ${wfrp4eLines - frLines} lignes\n\n`;
|
|
|
|
// Extraire les textes notables
|
|
const wfrp4eTexts = extractNotableTexts(wfrp4eContent);
|
|
const frTexts = extractNotableTexts(frContent);
|
|
|
|
if (wfrp4eTexts.length > 0 || frTexts.length > 0) {
|
|
report += `### Textes identifiés\n\n`;
|
|
|
|
if (wfrp4eTexts.length > 0) {
|
|
report += `**WFRP4E (anglais)**:\n`;
|
|
wfrp4eTexts.forEach(text => {
|
|
report += `- \`${text}\`\n`;
|
|
});
|
|
report += `\n`;
|
|
}
|
|
|
|
if (frTexts.length > 0) {
|
|
report += `**FR (français)**:\n`;
|
|
frTexts.forEach(text => {
|
|
report += `- \`${text}\`\n`;
|
|
});
|
|
report += `\n`;
|
|
}
|
|
}
|
|
|
|
// Afficher le code côte à côte si court
|
|
if (wfrp4eLines < 30 && frLines < 30) {
|
|
report += `### Code WFRP4E\n\n\`\`\`javascript\n${wfrp4eContent}\n\`\`\`\n\n`;
|
|
report += `### Code FR\n\n\`\`\`javascript\n${frContent}\n\`\`\`\n\n`;
|
|
}
|
|
|
|
report += `### Actions recommandées\n\n`;
|
|
report += `- [ ] Vérifier les changements structurels dans WFRP4E\n`;
|
|
report += `- [ ] Intégrer les modifications tout en gardant les traductions FR\n`;
|
|
report += `- [ ] Tester le script après modification\n\n`;
|
|
report += `---\n\n`;
|
|
});
|
|
|
|
function extractNotableTexts(content) {
|
|
const texts = new Set();
|
|
|
|
// Patterns pour extraire les textes
|
|
const patterns = [
|
|
/ui\.notifications\.(info|warn|error|notify)\s*\(\s*["'`]([^"'`]+)["'`]/g,
|
|
/this\.script\.(scriptNotification|scriptMessage|notification)\s*\(\s*["'`]([^"'`]+)["'`]/g,
|
|
/["'`](Loading|Could not find|Chargement|Impossible de trouver|créé|modifié|supprimé)[^"'`]*["'`]/gi
|
|
];
|
|
|
|
patterns.forEach(pattern => {
|
|
const matches = content.matchAll(pattern);
|
|
for (const match of matches) {
|
|
const text = match[2] || match[1];
|
|
if (text && text.length > 3 && text.length < 100) {
|
|
texts.add(text);
|
|
}
|
|
}
|
|
});
|
|
|
|
return Array.from(texts);
|
|
}
|
|
|
|
fs.writeFileSync(REPORT_FILE, report, 'utf-8');
|
|
|
|
console.log(`\nRapport de révision généré: ${REPORT_FILE}`);
|
|
console.log(`\nNombre de scripts à réviser: ${scriptsToReview.length}`);
|
|
console.log(`\nOuvrez le fichier avec votre éditeur préféré pour réviser les scripts.`);
|
|
console.log(`Vous pouvez aussi utiliser un outil de diff comme 'meld' ou 'kdiff3' pour comparer:`);
|
|
console.log(`\nExemple:`);
|
|
console.log(` meld ${FR_SCRIPTS}/${scriptsToReview[0].file} ${WFRP4E_SCRIPTS}/${scriptsToReview[0].file}`);
|