# ====================================================================
# Script de build Production pour AfterWork
# ====================================================================
# Ce script compile l'application Flutter pour la production
# avec les variables d'environnement appropriées.
# ====================================================================

param(
    [ValidateSet("apk", "appbundle", "ios", "web")]
    [string]$Target = "apk",

    [string]$ApiUrl = "https://api.lions.dev/afterwork",

    [ValidateSet("development", "staging", "production")]
    [string]$Environment = "production"
)

Write-Host "=====================================================================" -ForegroundColor Cyan
Write-Host "  AfterWork - Build Production" -ForegroundColor Cyan
Write-Host "=====================================================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "Configuration:" -ForegroundColor Yellow
Write-Host "  - Target: $Target" -ForegroundColor White
Write-Host "  - API URL: $ApiUrl" -ForegroundColor White
Write-Host "  - Environment: $Environment" -ForegroundColor White
Write-Host ""

# Nettoyage
Write-Host "[1/4] Nettoyage..." -ForegroundColor Green
flutter clean
if ($LASTEXITCODE -ne 0) {
    Write-Host "Erreur lors du nettoyage" -ForegroundColor Red
    exit 1
}

# Récupération des dépendances
Write-Host "[2/4] Récupération des dépendances..." -ForegroundColor Green
flutter pub get
if ($LASTEXITCODE -ne 0) {
    Write-Host "Erreur lors de la récupération des dépendances" -ForegroundColor Red
    exit 1
}

# Build
Write-Host "[3/4] Build $Target..." -ForegroundColor Green

$dartDefines = @(
    "API_BASE_URL=$ApiUrl",
    "ENVIRONMENT=$Environment",
    "DEBUG_MODE=false"
)

$dartDefineArg = $dartDefines | ForEach-Object { "--dart-define=$_" }

switch ($Target) {
    "apk" {
        flutter build apk --release @dartDefineArg --split-per-abi
    }
    "appbundle" {
        flutter build appbundle --release @dartDefineArg
    }
    "ios" {
        flutter build ios --release @dartDefineArg
    }
    "web" {
        flutter build web --release @dartDefineArg
    }
}

if ($LASTEXITCODE -ne 0) {
    Write-Host "Erreur lors du build" -ForegroundColor Red
    exit 1
}

# Résumé
Write-Host ""
Write-Host "[4/4] Build terminé avec succès !" -ForegroundColor Green
Write-Host ""
Write-Host "Artefacts générés:" -ForegroundColor Yellow

switch ($Target) {
    "apk" {
        Write-Host "  - build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk" -ForegroundColor White
        Write-Host "  - build/app/outputs/flutter-apk/app-arm64-v8a-release.apk" -ForegroundColor White
        Write-Host "  - build/app/outputs/flutter-apk/app-x86_64-release.apk" -ForegroundColor White
    }
    "appbundle" {
        Write-Host "  - build/app/outputs/bundle/release/app-release.aab" -ForegroundColor White
    }
    "ios" {
        Write-Host "  - build/ios/ipa/afterwork.ipa" -ForegroundColor White
    }
    "web" {
        Write-Host "  - build/web/" -ForegroundColor White
    }
}

Write-Host ""
Write-Host "=====================================================================" -ForegroundColor Cyan
