#!/usr/bin/env node /** * Script de déploiement automatique pour Firebase Hosting * - Bascule en mode PRODUCTION * - Incrémente la version * - Build l'application Flutter pour le web * - Déploie sur Firebase Hosting * - Rebascule en mode DÉVELOPPEMENT */ const { execSync } = require('child_process'); const { incrementVersion } = require('./increment_version'); const { setProductionMode, setDevelopmentMode } = require('./toggle_env'); console.log('🚀 Démarrage du déploiement Firebase Hosting...\n'); // Étape 0: Basculer en mode production console.log('🔒 Étape 0/4: Basculement en mode PRODUCTION'); if (!setProductionMode()) { console.error('❌ Impossible de basculer en mode production'); process.exit(1); } console.log(''); // Étape 1: Incrémenter la version console.log('📝 Étape 1/4: Incrémentation de la version'); const newVersion = incrementVersion(); console.log(''); // Étape 2: Build Flutter pour le web console.log('🔨 Étape 2/4: Build Flutter Web'); try { execSync('flutter build web --release', { stdio: 'inherit', cwd: process.cwd() }); console.log('✅ Build terminé avec succès\n'); } catch (error) { console.error('❌ Erreur lors du build Flutter'); // Rebascule en mode dev avant de quitter setDevelopmentMode(); process.exit(1); } // Étape 3: Déploiement Firebase console.log('🌐 Étape 3/4: Déploiement sur Firebase Hosting'); try { execSync('firebase deploy --only hosting', { stdio: 'inherit', cwd: process.cwd() }); console.log('\n✅ Déploiement terminé avec succès!'); console.log(`🎉 Version ${newVersion} déployée sur Firebase Hosting`); } catch (error) { console.error('❌ Erreur lors du déploiement Firebase'); // Rebascule en mode dev avant de quitter setDevelopmentMode(); process.exit(1); } // Étape 4: Rebascule en mode développement console.log('\n🔓 Étape 4/4: Retour en mode DÉVELOPPEMENT'); if (!setDevelopmentMode()) { console.warn('⚠️ Impossible de rebascule en mode développement'); console.warn('⚠️ Exécutez manuellement: npm run env:dev'); } else { console.log('✅ Mode développement restauré'); } console.log('\n✨ Processus de déploiement terminé!');