# Script de déploiement du hosting Firebase # Ce script construit l'application et la déploie sur Firebase Hosting Write-Host "=== Déploiement Firebase Hosting ===" -ForegroundColor Cyan Write-Host "" # 1. Vérifier que nous sommes dans le bon dossier if (!(Test-Path "pubspec.yaml")) { Write-Host "ERREUR: Ce script doit être exécuté depuis la racine du projet Flutter" -ForegroundColor Red exit 1 } # 2. Construire l'application Flutter pour le web Write-Host "Étape 1/3: Construction de l'application Flutter pour le web..." -ForegroundColor Yellow flutter build web if ($LASTEXITCODE -ne 0) { Write-Host "ERREUR: La construction de l'application a échoué" -ForegroundColor Red exit 1 } Write-Host "✓ Application construite avec succès" -ForegroundColor Green Write-Host "" # 3. Vérifier que version.json existe if (!(Test-Path "build/web/version.json")) { Write-Host "AVERTISSEMENT: version.json n'a pas été copié dans build/web/" -ForegroundColor Yellow # Copier manuellement si nécessaire if (Test-Path "web/version.json") { Write-Host " → Copie de web/version.json vers build/web/..." -ForegroundColor Yellow Copy-Item "web/version.json" "build/web/version.json" Write-Host "✓ Fichier copié" -ForegroundColor Green } else { Write-Host "ERREUR: web/version.json n'existe pas" -ForegroundColor Red exit 1 } } Write-Host "" # 4. Afficher la version qui va être déployée $versionContent = Get-Content "build/web/version.json" | ConvertFrom-Json Write-Host "Version à déployer: $($versionContent.version)" -ForegroundColor Cyan Write-Host "Force update: $($versionContent.forceUpdate)" -ForegroundColor Cyan Write-Host "" # 5. Demander confirmation $confirm = Read-Host "Voulez-vous déployer sur Firebase Hosting ? (o/n)" if ($confirm -ne "o" -and $confirm -ne "O") { Write-Host "Déploiement annulé" -ForegroundColor Yellow exit 0 } Write-Host "" # 6. Déployer sur Firebase Hosting Write-Host "Étape 2/3: Déploiement sur Firebase Hosting..." -ForegroundColor Yellow firebase deploy --only hosting if ($LASTEXITCODE -ne 0) { Write-Host "ERREUR: Le déploiement a échoué" -ForegroundColor Red exit 1 } Write-Host "✓ Déploiement réussi" -ForegroundColor Green Write-Host "" # 7. Vérifier que version.json est accessible Write-Host "Étape 3/3: Vérification de l'accès à version.json..." -ForegroundColor Yellow try { $response = Invoke-WebRequest -Uri "https://app.em2events.fr/version.json" -Method GET -UseBasicParsing if ($response.StatusCode -eq 200) { Write-Host "✓ version.json est accessible" -ForegroundColor Green # Vérifier les en-têtes CORS if ($response.Headers["Access-Control-Allow-Origin"]) { Write-Host "✓ En-têtes CORS configurés correctement" -ForegroundColor Green } else { Write-Host "⚠ ATTENTION: En-têtes CORS non détectés" -ForegroundColor Yellow Write-Host " Les en-têtes peuvent prendre quelques minutes pour se propager" -ForegroundColor Yellow } # Afficher la version déployée $deployedVersion = ($response.Content | ConvertFrom-Json).version Write-Host "Version déployée: $deployedVersion" -ForegroundColor Cyan } else { Write-Host "⚠ Code de statut: $($response.StatusCode)" -ForegroundColor Yellow } } catch { Write-Host "⚠ Impossible de vérifier l'accès à version.json" -ForegroundColor Yellow Write-Host " Erreur: $($_.Exception.Message)" -ForegroundColor Yellow Write-Host " Le fichier peut prendre quelques minutes pour être accessible" -ForegroundColor Yellow } Write-Host "" Write-Host "=== Déploiement terminé ===" -ForegroundColor Cyan Write-Host "" Write-Host "Les utilisateurs recevront une notification de mise à jour au prochain chargement de l'application." -ForegroundColor Green Write-Host "URL de l'application: https://app.em2events.fr" -ForegroundColor Cyan