73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
// convert-entries.js
|
|
// Script générique pour convertir un tableau "entries" en objet indexé par id
|
|
|
|
function convertEntriesToObject(jsonInput) {
|
|
// Parse si c'est une string, sinon utiliser directement
|
|
const data = typeof jsonInput === 'string' ? JSON.parse(jsonInput) : jsonInput;
|
|
|
|
if (!data || typeof data !== 'object') {
|
|
throw new Error('Entrée invalide : doit être un objet ou un JSON valide');
|
|
}
|
|
|
|
if (!data.entries || !Array.isArray(data.entries)) {
|
|
throw new Error('L\'objet doit contenir une propriété "entries" qui est un tableau');
|
|
}
|
|
|
|
// Conversion du tableau entries en objet
|
|
const entriesObject = {};
|
|
|
|
for (const entry of data.entries) {
|
|
if (!entry || typeof entry !== 'object') {
|
|
console.warn('Entrée invalide dans le tableau, ignorée :', entry);
|
|
continue;
|
|
}
|
|
|
|
if (entry.id === undefined || entry.id === null) {
|
|
console.warn('Entrée sans ID, ignorée :', entry);
|
|
continue;
|
|
}
|
|
|
|
// Créer une copie sans le champ id
|
|
const { id, ...rest } = entry;
|
|
entriesObject[entry.id] = { ...rest };
|
|
}
|
|
|
|
// Retourner un nouvel objet avec entries converti
|
|
return {
|
|
...data,
|
|
entries: entriesObject
|
|
};
|
|
}
|
|
|
|
// Gestion des arguments en ligne de commande
|
|
if (require.main === module) {
|
|
const fs = require('fs');
|
|
|
|
// Lire depuis stdin ou argument
|
|
let input;
|
|
if (process.argv[2]) {
|
|
// Premier argument = fichier ou JSON direct
|
|
try {
|
|
// Essayer de lire comme fichier
|
|
input = fs.readFileSync(process.argv[2], 'utf8');
|
|
} catch (e) {
|
|
// Sinon traiter comme JSON string
|
|
input = process.argv[2];
|
|
}
|
|
} else {
|
|
// Lire depuis stdin
|
|
input = fs.readFileSync(process.stdin.fd, 'utf8');
|
|
}
|
|
|
|
try {
|
|
const result = convertEntriesToObject(input);
|
|
console.log(JSON.stringify(result, null, 2));
|
|
} catch (error) {
|
|
console.error('Erreur:', error.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// Exporter pour utilisation comme module
|
|
module.exports = convertEntriesToObject;
|