#!/bin/bash

# Script de réinitialisation complète pour résoudre les problèmes de compilation iOS
# Spécialement conçu pour résoudre l'erreur "No such module 'Flutter'"
# Version 2.0 - Avec ajout automatique des chemins de recherche de frameworks

echo "🧹 Nettoyage complet de l'environnement iOS..."

# Se placer dans le répertoire du projet
cd "$(dirname "$0")"

# Supprimer les fichiers générés par Flutter
echo "📦 Nettoyage des fichiers Flutter..."
flutter clean

# Supprimer le cache pub
echo "🗑️ Suppression du cache pub pour les plugins problématiques..."
rm -rf ~/.pub-cache/hosted/pub.dev/connectivity_plus-*

# Supprimer les fichiers de CocoaPods
echo "🗂️ Nettoyage des fichiers CocoaPods..."
cd ios
rm -rf Pods
rm -rf .symlinks
rm -f Podfile.lock
rm -rf ~/Library/Developer/Xcode/DerivedData

# Supprimer le workspace Xcode (il sera recréé)
echo "🔄 Suppression du workspace Xcode..."
rm -rf Runner.xcworkspace

# Revenir au répertoire parent
cd ..

# Récupérer les dépendances Flutter
echo "📥 Récupération des dépendances Flutter..."
flutter pub get

# Régénérer les fichiers iOS
echo "🔨 Précaching des outils iOS..."
flutter precache --ios --force

# Forcer la génération des plugins
echo "🔌 Régénération des plugins..."
flutter pub cache repair
flutter pub get

# Réinstaller les pods avec des options supplémentaires
echo "📲 Réinstallation des pods..."
cd ios
pod deintegrate
pod cache clean --all
pod repo update
pod install --repo-update --verbose

# Ajouter automatiquement les chemins de recherche de frameworks
echo "🔍 Ajout des chemins de recherche de frameworks..."

# Créer un fichier temporaire pour stocker les chemins de recherche
cat > ios/add_framework_paths.rb << 'EOL'
#!/usr/bin/env ruby

require 'xcodeproj'

# Ouvrir le projet
project_path = 'Runner.xcodeproj'
project = Xcodeproj::Project.open(project_path)

# Trouver la cible Runner
target = project.targets.find { |t| t.name == 'Runner' }

# Parcourir toutes les configurations de build
target.build_configurations.each do |config|
  # Obtenir les paramètres de build actuels
  build_settings = config.build_settings
  
  # Définir les chemins de recherche de frameworks
  framework_search_paths = [
    '$(inherited)',
    '"${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift"',
    '"${PODS_CONFIGURATION_BUILD_DIR}/connectivity_plus"',
    '"${PODS_CONFIGURATION_BUILD_DIR}/path_provider_foundation"',
    '"${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_ios"',
    '"${PODS_ROOT}/Flutter"',
    '"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter"'
  ]
  
  # Ajouter les chemins de recherche de frameworks
  build_settings['FRAMEWORK_SEARCH_PATHS'] = framework_search_paths
  
  # Ajouter les chemins de recherche d'en-têtes
  header_search_paths = [
    '$(inherited)',
    '"${PODS_ROOT}/Flutter"',
    '"${PODS_CONFIGURATION_BUILD_DIR}"'
  ]
  
  build_settings['HEADER_SEARCH_PATHS'] = header_search_paths
  
  # S'assurer que les modules sont activés
  build_settings['DEFINES_MODULE'] = 'YES'
  
  # Désactiver le bitcode
  build_settings['ENABLE_BITCODE'] = 'NO'
  
  # Inclure tous les assets d'icônes
  build_settings['ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS'] = 'YES'
  
  # Autres paramètres importants
  build_settings['SWIFT_VERSION'] = '5.0'
  build_settings['CLANG_ENABLE_MODULES'] = 'YES'
end

# Enregistrer les modifications
project.save

puts "✅ Chemins de recherche de frameworks ajoutés avec succès !"
EOL

# Exécuter le script Ruby pour ajouter les chemins de recherche
cd ios
ruby add_framework_paths.rb
cd ..

echo "✅ Réinitialisation iOS terminée ! Ouvrez le projet avec 'open ios/Runner.xcworkspace'"
