#!/bin/bash

# Script para clonar el proyecto en el vhost de chat.englishworldcenter.com.
# Debe ejecutarse como el usuario 'chat-englishworldcenter' (sin sudo).

set -e # Exit on any error

echo "🚀 Clonando repositorio en el vhost chat.englishworldcenter.com..."

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Configuration
DEPLOY_USER="chat-englishworldcenter"
HTTPDOCS="/var/www/vhosts/chat.englishworldcenter.com/httpdocs"
REPO_URL="git@github.com:Acceleralia-EnglishWorldCenter/englishworldcenter-chatbot.git"

# Comprobar que se ejecuta como el usuario correcto (no requiere sudo)
CURRENT_USER=$(whoami)
if [ "$CURRENT_USER" != "$DEPLOY_USER" ]; then
    echo -e "${YELLOW}⚠️  Este script está pensado para el usuario '${DEPLOY_USER}'.${NC}"
    echo -e "${YELLOW}   Actualmente ejecutando como: ${CURRENT_USER}${NC}"
    echo -e "${YELLOW}   Para cambiar de usuario: su - ${DEPLOY_USER}${NC}"
    read -p "¿Continuar de todos modos? (s/N): " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[sS]$ ]]; then
        exit 1
    fi
fi

# Comprobar que existe la clave SSH (no se usa sudo para generarla)
# Primera ejecución: se genera la clave; segunda ejecución: se clona el repo.
if [ ! -f "$HOME/.ssh/id_ed25519" ] && [ ! -f "$HOME/.ssh/id_rsa" ]; then
    echo -e "${YELLOW}🔑 No se encontró clave SSH. Generando clave ed25519...${NC}"
    mkdir -p "$HOME/.ssh"
    chmod 700 "$HOME/.ssh"
    ssh-keygen -t ed25519 -f "$HOME/.ssh/id_ed25519" -N ""
    echo -e "${GREEN}✅ Clave SSH generada.${NC}"
    echo ""
    echo -e "${BLUE}📋 Siguiente paso (primera ejecución completada):${NC}"
    echo -e "  1. Añade la clave pública a GitHub (Settings → SSH and GPG keys → New SSH key)."
    echo -e "  2. Copia la clave desde el servidor:"
    echo -e "     ${YELLOW}cat $HOME/.ssh/id_ed25519.pub${NC}"
    echo -e "  3. Vuelve a ejecutar este script para clonar el repositorio:"
    echo -e "     ${YELLOW}$0${NC}"
    echo ""
    exit 0
fi

# Comprobar si ya está clonado en la raíz de httpdocs
if [ -d "${HTTPDOCS}/.git" ]; then
    echo -e "${GREEN}✅ El repositorio ya está en ${HTTPDOCS}.${NC}"
else
    # Clonar en temporal y luego mover a httpdocs (para no requerir httpdocs vacío)
    CLONE_TMP=$(mktemp -d)
    trap "rm -rf $CLONE_TMP" EXIT
    echo -e "${YELLOW}📥 Clonando repositorio...${NC}"
    if ! git clone "$REPO_URL" "$CLONE_TMP"; then
        echo -e "${RED}❌ Error al clonar. Comprueba la clave SSH en GitHub.${NC}"
        echo -e "${BLUE}Clave pública: cat $HOME/.ssh/id_ed25519.pub${NC}"
        exit 1
    fi
    echo -e "${YELLOW}📁 Copiando a ${HTTPDOCS}...${NC}"
    mkdir -p "$HTTPDOCS"
    for f in "$CLONE_TMP"/*; do [ -e "$f" ] && cp -a "$f" "$HTTPDOCS/"; done
    for f in "$CLONE_TMP"/.*; do
        [ "$f" != "$CLONE_TMP/." ] && [ "$f" != "$CLONE_TMP/.." ] && [ -e "$f" ] && cp -a "$f" "$HTTPDOCS/"
    done
    echo -e "${GREEN}✅ Repositorio clonado en la raíz de httpdocs.${NC}"
fi

echo ""
echo -e "${GREEN}🎉 Proceso completado.${NC}"
echo ""
echo -e "${BLUE}📋 Próximos pasos:${NC}"
echo -e "  1. Ir al proyecto: cd ${HTTPDOCS}"
echo -e "  2. Configurar el archivo .env."
echo -e "  3. Ejecutar el script de despliegue si aplica."
echo ""
