#!/bin/bash set -e BLUE='\033[1;34m' YELLOW='\033[1;33m' GREEN='\033[1;32m' RED='\033[1;31m' NC='\033[0m' echo -e "${BLUE} LOG:${YELLOW} Setting up Go (GVM)...${NC}" # 1. Install GVM dependencies unalias cd 2>/dev/null || true # 2. Install GVM if missing if [ ! -d "$HOME/.gvm" ]; then bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) fi # 3. Load GVM [[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm" # 4. Install Go # Use a known stable version that exists. 1.24.11 is speculative. 1.24.0 is real. TARGET_GO="go1.24.0" if command -v gvm &> /dev/null; then if [[ $(gvm list) != *"$TARGET_GO"* ]]; then echo -e "${BLUE} LOG:${YELLOW} Installing $TARGET_GO...${NC}" # Try Binary install first (Fastest/Safest) gvm install "$TARGET_GO" -B || { echo -e "${RED} LOG: Binary failed. Bootstrapping via go1.22.9...${NC}" gvm install go1.22.9 -B gvm use go1.22.9 gvm install "$TARGET_GO" } gvm use "$TARGET_GO" --default echo -e "${GREEN} LOG: Go setup complete.$(go version)${NC}" else echo -e "${GREEN} LOG: $TARGET_GO already installed.${NC}" fi else echo -e "${RED} ERROR: GVM failed to load.${NC}" exit 1 fi