const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const readdir = promisify(fs.readdir);
const readFile = promisify(fs.readFile);
const writeFile = promisify(fs.writeFile);

const ICONS_DIR = path.join(__dirname, '../public/assets/icons');
const OUTPUT_FILE = path.join(__dirname, '../public/assets/iconRef/list.json');

async function generateIconList() {
  try {
    // Créer le dossier de sortie s'il n'existe pas
    const outputDir = path.dirname(OUTPUT_FILE);
    if (!fs.existsSync(outputDir)) {
      fs.mkdirSync(outputDir, { recursive: true });
    }

    // Lire tous les fichiers SVG
    const files = await readdir(ICONS_DIR);
    const svgFiles = files.filter(file => file.endsWith('.svg'));

    // Générer la liste des icônes
    const iconList = await Promise.all(
      svgFiles.map(async (file) => {
        const name = path.basename(file, '.svg');
        const content = await readFile(path.join(ICONS_DIR, file), 'utf8');

        // Extraire la catégorie du nom du fichier ou du dossier parent
        const category = name.split('-')[0] || 'default';

        return {
          name: name,
          category,
          svg: content
        };
      })
    );

    // Écrire le fichier JSON
    await writeFile(OUTPUT_FILE, JSON.stringify(iconList, null, 2));
    console.log(`Liste des icônes générée avec succès dans ${OUTPUT_FILE}`);
  } catch (error) {
    console.error('Erreur lors de la génération de la liste des icônes:', error);
  }
}

generateIconList();