#!/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