#!/bin/bash

set -e

echo "🚀 Démarrage du build APK..."

# Vérifier que Docker est installé
if ! command -v docker &> /dev/null; then
    echo "❌ Docker n'est pas installé. Veuillez l'installer d'abord."
    exit 1
fi

# Vérifier que docker compose est disponible
if ! docker compose version &> /dev/null; then
    echo "❌ docker compose n'est pas disponible. Veuillez l'installer d'abord."
    exit 1
fi

# Construire l'image Docker
echo "📦 Construction de l'image Docker..."
docker compose -f docker-compose.build.yml build

# Démarrer le conteneur et exécuter les commandes de build
echo "🔨 Build de l'application Next.js..."
docker compose -f docker-compose.build.yml run --rm android-builder bash -c "
    set -e
    cd /app
    
    echo '📦 Vérification du volume node_modules...'
    df -h /app/node_modules
    ls -la /app/node_modules | head -5
    
    echo '📦 Installation des dépendances Node.js...'
    npm install --include=dev
    
    echo '📦 Vérification après installation...'
    ls -la /app/node_modules/tailwindcss 2>&1 | head -3 || echo '❌ tailwindcss toujours absent'
    npm list tailwindcss 2>&1 | head -3 || echo '❌ tailwindcss non listé'
    
    if [ ! -d "/app/node_modules/tailwindcss" ]; then
        echo '⚠️ tailwindcss manquant, installation forcée...'
        npm install tailwindcss postcss autoprefixer --save-dev --force
    fi
    
    echo '📦 Installation des dépendances Capacitor...'
    npm install @capacitor/core @capacitor/cli @capacitor/android
    
    echo '🧹 Nettoyage du cache Next.js...'
    rm -rf .next
    
    echo '⚙️ Configuration Next.js pour export statique...'
    if [ -f next.config.export.js ]; then
        cp next.config.export.js next.config.js
        echo '✅ Configuration d export utilisée'
    else
        cp next.config.js next.config.js.backup
        sed -i 's/\"output\": \"standalone\"/\"output\": \"export\"/' next.config.js
        sed -i '/images:/a\    unoptimized: true,' next.config.js
        echo '✅ Configuration modifiée pour export statique'
    fi
    
    echo '⚙️ Exclusion temporaire des routes API...'
    if [ -d app/api ]; then
        mv app/api /tmp/api-backup-$$ 2>/dev/null || mv app/api ../api-backup-$$
        echo '✅ Routes API déplacées temporairement'
    fi
    
    echo '🏗️ Build de production Next.js...'
    npm run build || npm run build -- --no-lint
    
    echo '⚙️ Restauration des routes API...'
    if [ -d /tmp/api-backup-$$ ]; then
        mv /tmp/api-backup-$$ app/api
        echo '✅ Routes API restaurées'
    elif [ -d ../api-backup-$$ ]; then
        mv ../api-backup-$$ app/api
        echo '✅ Routes API restaurées'
    fi
    
    echo '⚙️ Vérification du dossier out...'
    ls -la out/ 2>&1 | head -10 || echo '⚠️ Dossier out non trouvé'
    
    echo '⚙️ Restauration de la configuration Next.js...'
    if [ -f next.config.js.backup ]; then
        mv next.config.js.backup next.config.js
    fi
    
    echo '⚙️ Initialisation Capacitor (si nécessaire)...'
    if [ ! -f capacitor.config.ts ]; then
        npx cap init 'Compagnon Admin' com.pensionmarama.admin --web-dir=out
    fi
    
    echo '📱 Ajout de la plateforme Android...'
    npx cap add android || true
    
    echo '🔄 Synchronisation Capacitor...'
    npx cap sync android
    
    echo '✅ Build terminé !'
"

echo "📱 Ouverture du projet Android dans le conteneur..."
echo "Pour générer l'APK, exécutez dans le conteneur :"
echo "  cd android && ./gradlew assembleDebug"
echo ""
echo "Ou utilisez Android Studio :"
echo "  npx cap open android"
echo ""
echo "Pour entrer dans le conteneur :"
echo "  docker compose -f docker-compose.build.yml run --rm android-builder /bin/bash"

