#!/bin/bash

# ============================================
# Script de Backup de Archivos Protegidos
# ============================================
# Este script crea un backup de todos los archivos
# que deben protegerse durante actualizaciones
# ============================================

# Obtener directorio del script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"

# Crear directorio de backup
BACKUP_DIR="storage/app/backups/pre-update-$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

echo "📦 Creando backup de archivos protegidos..."
echo "📁 Directorio: $BACKUP_DIR"
echo ""

# Backup de configuración
echo "📄 Respaldando configuración..."
cp config/site.php "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ config/site.php" || echo "  ⚠️  config/site.php no encontrado"
cp config/cd-system.php "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ config/cd-system.php" || echo "  ⚠️  config/cd-system.php no encontrado"

# Backup de assets - Logos
echo ""
echo "🎨 Respaldando logos..."
if [ -d "public/cd-project/img/logos" ]; then
    cp -r public/cd-project/img/logos "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ public/cd-project/img/logos/" || echo "  ⚠️  Error al respaldar logos"
else
    echo "  ⚠️  public/cd-project/img/logos/ no existe"
fi

# Backup de assets - Favicons
echo ""
echo "🎨 Respaldando favicons..."
if [ -d "public/cd-project/img/favicon" ]; then
    cp -r public/cd-project/img/favicon "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ public/cd-project/img/favicon/" || echo "  ⚠️  Error al respaldar favicons"
else
    echo "  ⚠️  public/cd-project/img/favicon/ no existe"
fi

# Backup de assets - Assets temporales
echo ""
echo "🎨 Respaldando assets temporales..."
if [ -d "public/cd-project/assets" ]; then
    cp -r public/cd-project/assets "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ public/cd-project/assets/" || echo "  ⚠️  Error al respaldar assets"
else
    echo "  ⚠️  public/cd-project/assets/ no existe"
fi

# Backup de assets - Meta tags
echo ""
echo "🎨 Respaldando meta tags..."
if [ -d "public/cd-project/img/meta-tags" ]; then
    cp -r public/cd-project/img/meta-tags "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ public/cd-project/img/meta-tags/" || echo "  ⚠️  Error al respaldar meta tags"
else
    echo "  ⚠️  public/cd-project/img/meta-tags/ no existe"
fi

# Backup de datos del proyecto
echo ""
echo "💾 Respaldando datos del proyecto..."
if [ -d "database/seeders/project-data" ]; then
    cp -r database/seeders/project-data "$BACKUP_DIR/" 2>/dev/null && echo "  ✅ database/seeders/project-data/" || echo "  ⚠️  Error al respaldar datos"
else
    echo "  ⚠️  database/seeders/project-data/ no existe"
fi

# Crear archivo de información del backup
echo ""
echo "📋 Creando archivo de información del backup..."
cat > "$BACKUP_DIR/BACKUP_INFO.txt" << EOF
Backup de Archivos Protegidos
==============================
Fecha: $(date)
Proyecto: $(basename "$PROJECT_DIR")
Rama Git: $(git branch --show-current 2>/dev/null || echo "N/A")
Commit: $(git rev-parse HEAD 2>/dev/null || echo "N/A")

Archivos respaldados:
- config/site.php
- config/cd-system.php
- public/cd-project/img/logos/
- public/cd-project/img/favicon/
- public/cd-project/assets/
- public/cd-project/img/meta-tags/
- database/seeders/project-data/

Para restaurar, usar:
./scripts/restore-protected-files.sh $BACKUP_DIR
EOF

echo "  ✅ BACKUP_INFO.txt creado"

# Resumen
echo ""
echo "✅ Backup completado"
echo "📁 Ubicación: $BACKUP_DIR"
echo ""
echo "📋 Archivos respaldados:"
ls -lh "$BACKUP_DIR" | tail -n +2 | awk '{print "  " $9 " (" $5 ")"}'
echo ""
echo "💡 Para restaurar, usar:"
echo "   ./scripts/restore-protected-files.sh $BACKUP_DIR"
