#!/usr/bin/env bash
# install_volta
# -------------
# Instala Volta — gestor de versiones de Node.js rápido y confiable.
# Usa el instalador oficial de get.volta.sh. Configura VOLTA_HOME y PATH
# en ~/.bashrc y ~/.zshrc.
#
# USO:
#   source install_volta.sh
#   install_volta

install_volta() {
    echo "Instalando Volta (gestor de versiones Node.js)..."
    echo ""

    # Verificar si Volta ya está instalado
    if command -v volta &>/dev/null; then
        local current_version
        current_version="$(volta --version 2>/dev/null || echo "desconocida")"
        echo "Volta ya está instalado (versión: ${current_version})."
        return 0
    fi

    # Verificar curl
    if ! command -v curl &>/dev/null; then
        echo "install_volta: curl no está instalado (requerido)" >&2
        echo "  Instálalo con: sudo apt install curl" >&2
        return 1
    fi

    echo "Descargando e instalando Volta (instalador oficial)..."
    if ! curl https://get.volta.sh | bash; then
        echo "install_volta: falló la instalación de Volta" >&2
        echo "  Verifica tu conexión a internet" >&2
        return 1
    fi

    echo ""

    # Configurar variables de entorno
    local volta_home="$HOME/.volta"
    export VOLTA_HOME="$volta_home"
    export PATH="$volta_home/bin:$PATH"

    # Configurar en ~/.bashrc
    if ! grep -q "VOLTA_HOME" "$HOME/.bashrc" 2>/dev/null; then
        {
            echo ""
            echo "# Volta configuration"
            echo 'export VOLTA_HOME="$HOME/.volta"'
            echo 'export PATH="$VOLTA_HOME/bin:$PATH"'
        } >> "$HOME/.bashrc"
        echo "Variables añadidas a ~/.bashrc"
    else
        echo "Variables ya configuradas en ~/.bashrc"
    fi

    # Configurar en ~/.zshrc si existe
    if [[ -f "$HOME/.zshrc" ]]; then
        if ! grep -q "VOLTA_HOME" "$HOME/.zshrc" 2>/dev/null; then
            {
                echo ""
                echo "# Volta configuration"
                echo 'export VOLTA_HOME="$HOME/.volta"'
                echo 'export PATH="$VOLTA_HOME/bin:$PATH"'
            } >> "$HOME/.zshrc"
            echo "Variables añadidas a ~/.zshrc"
        fi
    fi

    echo ""

    # Verificar instalación
    if command -v volta &>/dev/null; then
        local installed_version
        installed_version="$(volta --version)"
        echo "Volta instalado correctamente: ${installed_version}"
    elif [[ -f "$HOME/.volta/bin/volta" ]]; then
        echo "Volta instalado en ${HOME}/.volta/bin pero no está en PATH actual."
        echo "  Ejecuta: source ~/.bashrc  (o abre una nueva terminal)"
    else
        echo "install_volta: Volta no está disponible después de la instalación" >&2
        return 1
    fi

    echo ""
    echo "Próximos pasos:"
    echo "  1. source ~/.bashrc       - Recargar shell"
    echo "  2. volta install node     - Instalar Node.js"
    echo "  3. volta install pnpm     - Instalar pnpm"
    echo ""
    echo "Comandos útiles:"
    echo "  volta install node@20     - Instalar Node.js v20"
    echo "  volta list                - Ver herramientas instaladas"
}

# Ejecutar si se invoca directamente
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    install_volta "$@"
fi
