#!/usr/bin/env bash
# install_pnpm
# ------------
# Instala pnpm globalmente usando npm.
# Verifica que npm esté disponible antes de instalar.
# Idempotente: informa si pnpm ya está instalado.
#
# USO:
#   source install_pnpm.sh
#   install_pnpm

install_pnpm() {
    echo "Instalando pnpm..."
    echo ""

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

    # Verificar que npm esté disponible
    if ! command -v npm &>/dev/null; then
        echo "install_pnpm: npm no está instalado (requerido para instalar pnpm)" >&2
        echo "  Instala Node.js primero con install_nodejs" >&2
        return 1
    fi

    local npm_version
    npm_version="$(npm --version 2>/dev/null || echo "?")"
    echo "npm detectado: ${npm_version}"
    echo ""

    echo "Instalando pnpm globalmente (npm install -g pnpm)..."
    if ! npm install -g pnpm; then
        echo "install_pnpm: falló la instalación de pnpm" >&2
        echo "  Intenta con sudo: sudo npm install -g pnpm" >&2
        return 1
    fi

    # Verificar instalación
    if ! command -v pnpm &>/dev/null; then
        echo "install_pnpm: pnpm no está disponible después de la instalación" >&2
        echo "  Verifica que npm/bin esté en tu PATH" >&2
        return 1
    fi

    local installed_version
    installed_version="$(pnpm --version)"
    echo ""
    echo "pnpm instalado correctamente: ${installed_version}"
    echo ""
    echo "Comandos útiles:"
    echo "  pnpm install    - Instalar dependencias"
    echo "  pnpm add <pkg>  - Agregar paquete"
    echo "  pnpm run <cmd>  - Ejecutar script"
}

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