Files
swade-fr-content/scripts/convert-all-entries.js
T

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 };