#!/bin/bash

# ========================================
# Script: test-update-assets.sh
# Descripción: Verifica el funcionamiento del comando project:update-assets
# Uso: ./test-update-assets.sh
# ========================================

# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CD_SYSTEM_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
cd "$CD_SYSTEM_DIR"

echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE}Verificación del Comando project:update-assets${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
echo ""

# 1. Verificar que el comando existe
echo -e "${CYAN}1. Verificando que el comando esté registrado...${NC}"
if php artisan list | grep -q "project:update-assets"; then
    echo -e "${GREEN}✅ Comando registrado${NC}"
else
    echo -e "${RED}❌ Comando NO registrado${NC}"
    exit 1
fi
echo ""

# 2. Verificar archivos requeridos en assets
echo -e "${CYAN}2. Verificando archivos requeridos en public/cd-project/assets/...${NC}"
REQUIRED_FILES=(
    "logo.png"
    "logo-2.png"
    "logo-alternative.png"
    "favicon.ico"
    "apple-touch-icon.png"
    "favicon.svg"
    "web-app-manifest-192x192.png"
    "web-app-manifest-512x512.png"
)

MISSING_FILES=0
for file in "${REQUIRED_FILES[@]}"; do
    if [ -f "public/cd-project/assets/$file" ]; then
        echo -e "${GREEN}✅ $file${NC}"
    else
        echo -e "${RED}❌ $file (faltante)${NC}"
        MISSING_FILES=$((MISSING_FILES + 1))
    fi
done
echo ""

if [ $MISSING_FILES -gt 0 ]; then
    echo -e "${YELLOW}⚠️  Faltan $MISSING_FILES archivos requeridos${NC}"
    echo -e "${YELLOW}   El comando funcionará pero mostrará errores para los archivos faltantes${NC}"
    echo ""
fi

# 3. Verificar directorios destino
echo -e "${CYAN}3. Verificando directorios destino...${NC}"
if [ ! -d "public/cd-project/img/logos" ]; then
    echo -e "${YELLOW}⚠️  Directorio logos no existe (se creará automáticamente)${NC}"
else
    echo -e "${GREEN}✅ Directorio logos existe${NC}"
fi

if [ ! -d "public/cd-project/img/favicon" ]; then
    echo -e "${YELLOW}⚠️  Directorio favicon no existe (se creará automáticamente)${NC}"
else
    echo -e "${GREEN}✅ Directorio favicon existe${NC}"
fi
echo ""

# 4. Mostrar ayuda del comando
echo -e "${CYAN}4. Ayuda del comando:${NC}"
php artisan project:update-assets --help 2>&1 | head -20
echo ""

# 5. Probar ejecución (dry-run)
echo -e "${CYAN}5. ¿Deseas ejecutar el comando ahora?${NC}"
echo -e "${YELLOW}   Comando sugerido:${NC}"
echo -e "${GREEN}   php artisan project:update-assets public/cd-project/assets --backup --project=\"constructora-gama\"${NC}"
echo ""
read -p "¿Ejecutar ahora? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo ""
    echo -e "${BLUE}Ejecutando comando...${NC}"
    php artisan project:update-assets public/cd-project/assets --backup --project="constructora-gama"
    echo ""
    echo -e "${CYAN}6. Verificando resultados...${NC}"

    # Verificar que los archivos se copiaron
    for file in "${REQUIRED_FILES[@]}"; do
        if [[ "$file" == logo*.png ]]; then
            TARGET="public/cd-project/img/logos/$file"
        elif [[ "$file" == favicon* || "$file" == apple-touch-icon.png || "$file" == web-app-manifest-*.png ]]; then
            TARGET="public/cd-project/img/favicon/$file"
        else
            continue
        fi

        if [ -f "$TARGET" ]; then
            echo -e "${GREEN}✅ $file → $TARGET${NC}"
        else
            echo -e "${RED}❌ $file NO se copió a $TARGET${NC}"
        fi
    done
else
    echo -e "${YELLOW}Ejecución cancelada${NC}"
fi

echo ""
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"

