// convert-all-entries.js // Traite tous les fichiers JSON du répertoire compendiums/ // - Convertit entries[] en entries{} // - Ignore les fichiers déjà au bon format // - Sauvegarde l'ancien fichier en .OLD const fs = require('fs'); const path = require('path'); const convertEntriesToObject = require('./convert-entries'); const COMPENDIUMS_DIR = path.join(__dirname, '..', 'compendiums'); function isAlreadyConverted(data) { // Vérifie si entries est déjà un objet (et non un tableau) return data.entries && typeof data.entries === 'object' && !Array.isArray(data.entries); } function processFile(filePath) { const filename = path.basename(filePath); try { // Lire le fichier const content = fs.readFileSync(filePath, 'utf8'); const data = JSON.parse(content); // Vérifier si déjà converti if (isAlreadyConverted(data)) { console.log(`⏭️ ${filename} - déjà au bon format, ignoré`); return false; } // Vérifier qu'il y a bien un tableau entries if (!data.entries || !Array.isArray(data.entries)) { console.log(`⚠️ ${filename} - pas de tableau entries, ignoré`); return false; } // Effectuer la conversion const converted = convertEntriesToObject(data); // Sauvegarder l'ancien fichier en .OLD const backupPath = filePath + '.OLD'; fs.renameSync(filePath, backupPath); // Écrire le nouveau fichier fs.writeFileSync(filePath, JSON.stringify(converted, null, 2) + '\n', 'utf8'); console.log(`✅ ${filename} - converti`); return true; } catch (error) { console.error(`❌ ${filename} - ERREUR: ${error.message}`); return false; } } function main() { // Lister tous les fichiers JSON dans compendiums/ const files = fs.readdirSync(COMPENDIUMS_DIR) .filter(f => f.endsWith('.json') && !f.endsWith('.OLD')) .map(f => path.join(COMPENDIUMS_DIR, f)); console.log(`Fichiers JSON trouvés: ${files.length}`); console.log(''); let convertedCount = 0; let ignoredCount = 0; let errorCount = 0; for (const filePath of files) { const result = processFile(filePath); if (result === true) { convertedCount++; } else if (result === false) { ignoredCount++; } else { errorCount++; } } console.log(''); console.log(`Résumé:`); console.log(` - Convertis: ${convertedCount}`); console.log(` - Ignorés: ${ignoredCount}`); console.log(` - Erreurs: ${errorCount}`); } // Exécuter si lancé directement if (require.main === module) { main(); } module.exports = { processFile, isAlreadyConverted, main };