#!/bin/bash

# Preguntar la versión de Python que se desea instalar
read -p "Ingresa la versión de Python que deseas establecer como global (por ejemplo, 3.11.2 o 3.8.9): " PYTHON_VERSION

# Validar el formato de la versión ingresada (más permisivo)
if [[ ! $PYTHON_VERSION =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?([a-zA-Z0-9]+)?$ ]]; then
    echo "❌ Formato inválido. Asegúrate de ingresar una versión válida (por ejemplo, 3.11.2, 3.8.9, 3.8.9b1)."
    exit 1
fi

# Comprobar si pyenv está instalado
if ! command -v pyenv &> /dev/null; then
    echo "pyenv no está instalado. Procediendo a instalarlo..."

    # Instalar dependencias para pyenv
    apt-get update
    apt-get install -y curl git build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev

    # Instalar pyenv
    curl https://pyenv.run | bash

    # Configurar pyenv en el shell actual
    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
    # Agregar pyenv al bashrc para futuros shells
    echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
fi

# Verificar si la versión de Python ya está instalada con pyenv
if pyenv versions --bare | grep -q "^$PYTHON_VERSION$"; then
    echo "✅ Python $PYTHON_VERSION ya está instalado."
else
    # Instalar la versión solicitada de Python
    echo "Instalando Python $PYTHON_VERSION con pyenv..."
    pyenv install $PYTHON_VERSION

    # Comprobar si la instalación fue exitosa
    if [[ $? -ne 0 ]]; then
        echo "❌ Error durante la instalación de Python $PYTHON_VERSION."
        exit 1
    fi
fi


# Establecer la versión global de Python con pyenv
echo "Configurando Python $PYTHON_VERSION como versión global..."
pyenv global $PYTHON_VERSION

# Actualizar pip a la última versión
echo "Actualizando pip..."
pip install --upgrade pip

# Verificar la instalación
echo "Verificando la instalación..."
python --version
pip --version

# Recargar .bashrc para aplicar los cambios
echo "Recargando .bashrc para aplicar los cambios de pyenv..."
source ~/.bashrc

echo "✅ Python $PYTHON_VERSION configurado como versión global exitosamente."
