/**
 * Script pour générer les icônes PWA à partir du logo
 * 
 * Usage: node scripts/generate-icons.js
 * 
 * Nécessite: npm install --save-dev sharp
 */

const fs = require('fs')
const path = require('path')

// Tailles d'icônes requises pour PWA
const iconSizes = [72, 96, 128, 144, 152, 192, 384, 512]

async function generateIcons() {
  try {
    // Vérifier si sharp est installé
    let sharp
    try {
      sharp = require('sharp')
    } catch (e) {
      console.error('❌ Le package "sharp" n\'est pas installé.')
      console.log('📦 Installez-le avec: npm install --save-dev sharp')
      process.exit(1)
    }

    const logoPath = path.join(__dirname, '../public/logo_lediscord.png')
    const publicDir = path.join(__dirname, '../public')

    // Vérifier que le logo existe
    if (!fs.existsSync(logoPath)) {
      console.error(`❌ Logo introuvable: ${logoPath}`)
      process.exit(1)
    }

    console.log('🎨 Génération des icônes PWA avec fond transparent...')

    // Générer chaque taille d'icône
    for (const size of iconSizes) {
      const outputPath = path.join(publicDir, `icon-${size}x${size}.png`)
      
      // Calculer le padding (10% de la taille) pour éviter que le logo touche les bords
      const padding = Math.floor(size * 0.1)
      const contentSize = size - (padding * 2)
      
      await sharp(logoPath)
        .resize(contentSize, contentSize, {
          fit: 'contain',
          background: { r: 0, g: 0, b: 0, alpha: 0 } // Fond transparent
        })
        .extend({
          top: padding,
          bottom: padding,
          left: padding,
          right: padding,
          background: { r: 0, g: 0, b: 0, alpha: 0 } // Fond transparent
        })
        .resize(size, size, {
          kernel: sharp.kernel.lanczos3 // Meilleure qualité de redimensionnement
        })
        .png({
          quality: 100,
          compressionLevel: 9
        })
        .toFile(outputPath)
      
      console.log(`✅ Généré: icon-${size}x${size}.png`)
    }

    console.log('✨ Toutes les icônes ont été générées avec succès!')
    console.log('💡 Les icônes utilisent un fond transparent avec un padding intelligent.')
  } catch (error) {
    console.error('❌ Erreur lors de la génération des icônes:', error)
    process.exit(1)
  }
}

generateIcons()

