#!/usr/bin/env node

/**
 * Script para generar firebase-config.js para el Service Worker
 *
 * USO:
 *   node generate-firebase-config.js --output ./src/firebase-config.js
 *
 * CON ARCHIVO .env:
 *   node generate-firebase-config.js --env .env.firebase --output ./src/firebase-config.js
 *
 * VARIABLES DE ENTORNO REQUERIDAS:
 *   FIREBASE_API_KEY
 *   FIREBASE_AUTH_DOMAIN
 *   FIREBASE_PROJECT_ID
 *   FIREBASE_STORAGE_BUCKET
 *   FIREBASE_MESSAGING_SENDER_ID
 *   FIREBASE_APP_ID
 */

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

// Parsear argumentos
const args = process.argv.slice(2);
const getArg = (name) => {
  const index = args.indexOf(name);
  return index !== -1 ? args[index + 1] : null;
};

const envFile = getArg('--env');
const outputPath = getArg('--output') || './firebase-config.js';

// Cargar variables de .env si se especifica
if (envFile && fs.existsSync(envFile)) {
  const envContent = fs.readFileSync(envFile, 'utf8');
  envContent.split('\n').forEach((line) => {
    const match = line.match(/^([^=]+)=(.*)$/);
    if (match) {
      const key = match[1].trim();
      const value = match[2].trim().replace(/^["']|["']$/g, '');
      if (!process.env[key]) {
        process.env[key] = value;
      }
    }
  });
}

// Variables requeridas
const requiredVars = [
  'FIREBASE_API_KEY',
  'FIREBASE_AUTH_DOMAIN',
  'FIREBASE_PROJECT_ID',
  'FIREBASE_STORAGE_BUCKET',
  'FIREBASE_MESSAGING_SENDER_ID',
  'FIREBASE_APP_ID',
];

// Verificar variables
const missing = requiredVars.filter((v) => !process.env[v]);
if (missing.length > 0) {
  console.error('Error: Variables de entorno faltantes:');
  missing.forEach((v) => console.error(`  - ${v}`));
  console.error('\nConfigura las variables o usa --env archivo.env');
  process.exit(1);
}

// Generar contenido
const configContent = `/**
 * Firebase Configuration for Service Worker
 *
 * ARCHIVO GENERADO AUTOMÁTICAMENTE - NO EDITAR
 * Generado: ${new Date().toISOString()}
 *
 * Este archivo es cargado por firebase-messaging-sw.js
 * No contiene lógica, solo la configuración de Firebase.
 */

self.FIREBASE_CONFIG = {
  apiKey: "${process.env.FIREBASE_API_KEY}",
  authDomain: "${process.env.FIREBASE_AUTH_DOMAIN}",
  projectId: "${process.env.FIREBASE_PROJECT_ID}",
  storageBucket: "${process.env.FIREBASE_STORAGE_BUCKET}",
  messagingSenderId: "${process.env.FIREBASE_MESSAGING_SENDER_ID}",
  appId: "${process.env.FIREBASE_APP_ID}"
};
`;

// Escribir archivo
const resolvedOutput = path.resolve(process.cwd(), outputPath);
fs.writeFileSync(resolvedOutput, configContent);

console.log(`✅ Firebase config generado: ${resolvedOutput}`);
