#!/bin/bash

# Configuración para detener el script si hay errores graves
set -e

# Colores para los mensajes
VERDE='\033[0;32m'
ROJO='\033[0;31m'
AMARILLO='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${VERDE}==========================================================${NC}"
echo -e "${VERDE} Instalador Automático de Python 2.7 (Ubuntu 24.04+)${NC}"
echo -e "${VERDE}==========================================================${NC}"

# --- FUNCIÓN 1: VERIFICAR ROOT ---
if [ "$EUID" -ne 0 ]; then
  echo -e "${ROJO}❌ Error: Por favor, ejecuta este script como root (sudo).${NC}"
  exit 1
fi

# --- FUNCIÓN 2: VERIFICAR VERSIÓN DE UBUNTU ---
echo -e "${AMARILLO}--> Verificando versión del sistema operativo...${NC}"

# Obtener información del sistema
if [ -f /etc/os-release ]; then
    . /etc/os-release
else
    echo -e "${ROJO}❌ Error: No se pudo detectar el sistema operativo.${NC}"
    exit 1
fi

# Verificar si es Ubuntu
if [ "$ID" != "ubuntu" ]; then
    echo -e "${ROJO}❌ Error: Este script está diseñado solo para Ubuntu.${NC}"
    exit 1
fi

# Comparar versión (Lógica: Si VERSION_ID es menor a 24.04, falla)
# Usamos 'sort -V' para comparar versiones numéricas correctamente
MIN_VERSION="24.04"
if [ "$(printf '%s\n' "$MIN_VERSION" "$VERSION_ID" | sort -V | head -n1)" != "$MIN_VERSION" ]; then
    echo -e "${ROJO}❌ Error: Tu versión de Ubuntu es $VERSION_ID.${NC}"
    echo -e "${ROJO}   Se requiere Ubuntu $MIN_VERSION o superior para continuar.${NC}"
    exit 1
else
    echo -e "${VERDE}✅ Sistema compatible detectado: Ubuntu $VERSION_ID${NC}"
fi

# --- FUNCIÓN 3: VERIFICAR SI PYTHON YA ESTÁ INSTALADO ---
# Verificamos la ruta específica donde este script instala Python (/usr/local/python2.7)
echo -e "${AMARILLO}--> Buscando instalaciones previas de Python 2.7...${NC}"

PYTHON_BIN="/usr/local/python2.7/bin/python2.7"

if [ -f "$PYTHON_BIN" ]; then
    echo -e "${VERDE}✅ Python 2.7 ya se encuentra instalado en: $PYTHON_BIN${NC}"
    EXISTING_VERSION=$($PYTHON_BIN -V 2>&1)
    echo -e "   Versión detectada: $EXISTING_VERSION"
    echo -e "${AMARILLO}   Omitiendo instalación para evitar duplicados o conflictos.${NC}"
    exit 0
else
    echo -e "   No se detectó Python 2.7 en la ruta objetivo. Procediendo con la instalación..."
fi

# ==========================================================
# INICIO DE LA INSTALACIÓN (Si pasó las verificaciones)
# ==========================================================

# 1. Actualizar el sistema
echo -e "${AMARILLO}--> Actualizando repositorios...${NC}"
apt update

# 2. Instalar dependencias
echo -e "${AMARILLO}--> Instalando dependencias necesarias...${NC}"
apt install -y build-essential zlib1g-dev checkinstall libncurses5-dev \
libncurses-dev libnss3-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev \
libc6-dev libbz2-dev libffi-dev libreadline-dev libdb-dev curl

# 3. Descargar Python 2.7.18
echo -e "${AMARILLO}--> Descargando código fuente...${NC}"
cd /usr/src
wget https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/Python-2.7.18.tgz -O Python-2.7.18.tgz

# 4. Descomprimir
echo -e "${AMARILLO}--> Descomprimiendo...${NC}"
tar xzf Python-2.7.18.tgz
cd Python-2.7.18

# 5. Compilar
echo -e "${AMARILLO}--> Configurando y compilando (esto demora unos minutos)...${NC}"
./configure --prefix=/usr/local/python2.7
make
make install

# 6. Enlaces Simbólicos (Python)
echo -e "${AMARILLO}--> Creando accesos directos (symlinks)...${NC}"
# Forzamos (-f) la creación del enlace para asegurar que apunte al nuevo binario
ln -sf /usr/local/python2.7/bin/python2.7 /usr/local/bin/python2.7

# 7. Instalar PIP
echo -e "${AMARILLO}--> Instalando PIP...${NC}"
cd /usr/src
curl https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/get-pip.py -o get-pip.py
/usr/local/python2.7/bin/python2.7 get-pip.py

# 8. Enlaces Simbólicos (Pip)
ln -sf /usr/local/python2.7/bin/pip2.7 /usr/local/bin/pip2.7

# FINALIZACIÓN
echo -e "${VERDE}==========================================================${NC}"
echo -e "${VERDE} ¡Instalación Completada con Éxito!${NC}"
echo -e "${VERDE}==========================================================${NC}"
echo -e "Comandos disponibles:"
echo -e "  python2.7 --version  ->  $(python2.7 --version 2>&1)"
echo -e "  pip2.7 --version     ->  $(pip2.7 --version)"
exit 0