94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
// 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 };
|