#!/usr/bin/env node

/**
 * Script pour basculer entre mode développement et production
 */

const fs = require('fs');
const path = require('path');

const ENV_FILE = path.join(__dirname, '../lib/config/env.dart');
const ENV_DEV_FILE = path.join(__dirname, '../lib/config/env.dev.dart');

const PROD_CONFIG = `class Env {
  static const bool isDevelopment = false;

  // Configuration de l'auto-login en développement
  static const String devAdminEmail = '';
  static const String devAdminPassword = '';

  // URLs et endpoints
  static const String baseUrl = 'https://em2rp-951dc.firebaseapp.com';

  // Configuration Firebase
  static const String firebaseProjectId = 'em2rp-951dc';

  // Autres configurations
  static const int apiTimeout = 30000; // 30 secondes
}
`;

function setProductionMode() {
  try {
    // Sauvegarder la config actuelle dans env.dev.dart si elle n'existe pas
    if (!fs.existsSync(ENV_DEV_FILE) && fs.existsSync(ENV_FILE)) {
      const currentContent = fs.readFileSync(ENV_FILE, 'utf8');
      if (currentContent.includes('isDevelopment = true')) {
        fs.writeFileSync(ENV_DEV_FILE, currentContent, 'utf8');
        console.log('✅ Configuration de développement sauvegardée dans env.dev.dart');
      }
    }

    // Écrire la configuration de production
    fs.writeFileSync(ENV_FILE, PROD_CONFIG, 'utf8');
    console.log('✅ Mode PRODUCTION activé (isDevelopment = false, credentials masqués)');
    return true;
  } catch (error) {
    console.error('❌ Erreur lors du basculement en mode production:', error.message);
    return false;
  }
}

function setDevelopmentMode() {
  try {
    if (!fs.existsSync(ENV_DEV_FILE)) {
      console.error('❌ Fichier env.dev.dart introuvable. Créez-le d\'abord avec vos credentials.');
      return false;
    }

    const devContent = fs.readFileSync(ENV_DEV_FILE, 'utf8');
    fs.writeFileSync(ENV_FILE, devContent, 'utf8');
    console.log('✅ Mode DÉVELOPPEMENT activé (isDevelopment = true)');
    return true;
  } catch (error) {
    console.error('❌ Erreur lors du basculement en mode développement:', error.message);
    return false;
  }
}

// Exécuter si appelé directement
if (require.main === module) {
  const args = process.argv.slice(2);
  const mode = args[0];

  if (mode === 'prod' || mode === 'production') {
    process.exit(setProductionMode() ? 0 : 1);
  } else if (mode === 'dev' || mode === 'development') {
    process.exit(setDevelopmentMode() ? 0 : 1);
  } else {
    console.log('Usage: node toggle_env.js [prod|dev]');
    console.log('  prod : Bascule en mode production (isDevelopment = false, sans credentials)');
    console.log('  dev  : Bascule en mode développement (isDevelopment = true, avec credentials)');
    process.exit(1);
  }
}

module.exports = { setProductionMode, setDevelopmentMode };

