#!/usr/bin/env bash
# ==============================================================================
# KairoSync Enterprise - Script de Instalación Automatizada para Linux
# Compatible con Ubuntu, Debian, Fedora, Arch Linux, Manjaro y derivados.
# ==============================================================================
set -e

COLOR_AZUL='\033[0;34m'
COLOR_VERDE='\033[0;32m'
COLOR_AMBAR='\033[0;33m'
COLOR_ROJO='\033[0;31m'
NC='\033[0m'

echo -e "${COLOR_AZUL}=======================================================${NC}"
echo -e "${COLOR_AZUL}       KAIROSYNC ENTERPRISE - INSTALADOR LINUX         ${NC}"
echo -e "${COLOR_AZUL}=======================================================${NC}"

# 1. Comprobación de Privilegios y Arquitectura
ARQ=$(uname -m)
if [ "$ARQ" != "x86_64" ] && [ "$ARQ" != "aarch64" ]; then
    echo -e "${COLOR_ROJO}[!] Arquitectura no soportada: $ARQ. Se requiere x86_64 o aarch64.${NC}"
    exit 1
fi

echo -e "${COLOR_VERDE}[✓] Arquitectura detectada: $ARQ${NC}"

# 2. Detección del Gestor de Paquetes
echo -e "${COLOR_AZUL}[*] Comprobando dependencias del sistema...${NC}"
if command -v apt-get &> /dev/null; then
    PKG_MGR="apt"
    echo -e "    Gestor detectado: APT (Debian/Ubuntu/Mint)"
    sudo apt-get update -qq
    sudo apt-get install -y -qq python3 python3-pip python3-venv libxcb-cursor0 libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-xfixes0 libgl1 libglib2.0-0
elif command -v dnf &> /dev/null; then
    PKG_MGR="dnf"
    echo -e "    Gestor detectado: DNF (Fedora/RHEL)"
    sudo dnf install -y -q python3 python3-pip python3-virtualenv xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm mesa-libGL
elif command -v pacman &> /dev/null; then
    PKG_MGR="pacman"
    echo -e "    Gestor detectado: Pacman (Arch/Manjaro)"
    sudo pacman -Sy --noconfirm python python-pip libxcb xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm mesa
else
    echo -e "${COLOR_AMBAR}[!] No se detectó apt, dnf ni pacman. Asegúrate de tener Python 3.10+ y librerías XCB instaladas.${NC}"
fi

# 3. Directorios de Instalación
INSTALL_DIR="$HOME/.local/share/kairosync"
BIN_DIR="$HOME/.local/bin"
DESKTOP_DIR="$HOME/.local/share/applications"
ICON_DIR="$HOME/.local/share/icons/hicolor/scalable/apps"

mkdir -p "$INSTALL_DIR"
mkdir -p "$BIN_DIR"
mkdir -p "$DESKTOP_DIR"
mkdir -p "$ICON_DIR"

echo -e "${COLOR_AZUL}[*] Copiando código fuente a $INSTALL_DIR...${NC}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cp -r "$SCRIPT_DIR"/* "$INSTALL_DIR/"

# 4. Creación del Entorno Virtual de Python
echo -e "${COLOR_AZUL}[*] Creando entorno virtual aislado en Python 3...${NC}"
python3 -m venv "$INSTALL_DIR/venv"
"$INSTALL_DIR/venv/bin/pip" install --upgrade pip -q

echo -e "${COLOR_AZUL}[*] Instalando dependencias de KairoSync...${NC}"
if [ -f "$INSTALL_DIR/requirements.txt" ]; then
    "$INSTALL_DIR/venv/bin/pip" install -r "$INSTALL_DIR/requirements.txt" -q
else
    "$INSTALL_DIR/venv/bin/pip" install PyQt5 PyQt5-Qt5 requests google-auth google-auth-oauthlib google-api-python-client -q
fi

# 5. Creación del Lanzador Binario en ~/.local/bin/kairosync
cat << 'EOF' > "$BIN_DIR/kairosync"
#!/usr/bin/env bash
KAIRO_PATH="$HOME/.local/share/kairosync"
export QT_QPA_PLATFORM=xcb
exec "$KAIRO_PATH/venv/bin/python" "$KAIRO_PATH/main.py" "$@"
EOF

chmod +x "$BIN_DIR/kairosync"

# 6. Copiar Icono Oficial
if [ -f "$INSTALL_DIR/assets/escudo_sincronizador.ico" ]; then
    cp "$INSTALL_DIR/assets/escudo_sincronizador.ico" "$INSTALL_DIR/kairosync.ico"
fi

# 7. Crear Entrada .desktop para el Menú de Aplicaciones
cat << EOF > "$DESKTOP_DIR/kairosync.desktop"
[Desktop Entry]
Name=KairoSync Enterprise
Comment=Sincronización Quirúrgica para Google Drive sin suscripciones
Exec=$BIN_DIR/kairosync
Icon=$INSTALL_DIR/assets/kairosync_social_ad.jpg
Terminal=false
Type=Application
Categories=Network;FileTransfer;Utility;
StartupNotify=true
StartupWMClass=KairoSync
EOF

chmod +x "$DESKTOP_DIR/kairosync.desktop"

# 8. Actualizar Bases de Datos de Iconos y Desktop
if command -v update-desktop-database &> /dev/null; then
    update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
fi

echo -e "\n${COLOR_VERDE}=======================================================${NC}"
echo -e "${COLOR_VERDE}   ¡INSTALACIÓN DE KAIROSYNC COMPLETADA CON ÉXITO!     ${NC}"
echo -e "${COLOR_VERDE}=======================================================${NC}"
echo -e "Puedes iniciar KairoSync de las siguientes formas:"
echo -e " 1. Buscando 'KairoSync Enterprise' en tu menú de aplicaciones."
echo -e " 2. Ejecutando en tu terminal: ${COLOR_AZUL}kairosync${NC} (asegúrate de tener ~/.local/bin en tu PATH)."
echo -e " 3. Ejecutando directamente: ${COLOR_AZUL}$BIN_DIR/kairosync${NC}"
echo -e ""
