#!/bin/bash # Path: scripts/r.sh set -e BLUE='\033[1;34m' YELLOW='\033[1;33m' GREEN='\033[1;32m' RED='\033[1;31m' NC='\033[0m' # OS Detection if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID fi echo -e "${BLUE} LOG:${YELLOW} Detecting R installation strategy for $OS...${NC}" if [ "$OS" == "arch" ] || [ "$OS" == "manjaro" ]; then echo -e "${BLUE} LOG:${YELLOW} Arch Linux detected. Using system R (Pacman)...${NC}" # Install R + Build Tools sudo pacman -S --noconfirm --needed r gcc-fortran curl tar echo -e "${GREEN} SUCCESS:${NC} R installed via Pacman." R_BIN="R" elif [ "$OS" == "ubuntu" ] || [ "$OS" == "debian" ]; then echo -e "${BLUE} LOG:${YELLOW} Installing Debian build dependencies...${NC}" sudo DEBIAN_FRONTEND=noninteractive apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gfortran curl tar ca-certificates if ! command -v rig >/dev/null 2>&1; then echo -e "${BLUE} LOG:${YELLOW} Installing Rig for Debian/Ubuntu...${NC}" DEB_ARCH=$(dpkg --print-architecture) case "$DEB_ARCH" in amd64|arm64) ;; *) echo -e "${RED} ERROR:${NC} Unsupported Debian architecture for Rig: $DEB_ARCH" exit 1 ;; esac LATEST_REL_DATA=$(curl -fsSL https://api.github.com/repos/r-lib/rig/releases/latest) RIG_URL=$(echo "$LATEST_REL_DATA" | grep -o "https://[^\"]*r-rig_[^\"]*_${DEB_ARCH}\.deb" | head -n 1) if [ -z "$RIG_URL" ]; then echo -e "${RED} ERROR:${NC} Could not find Rig .deb download URL for architecture: $DEB_ARCH" exit 1 fi TEMP_DEB=$(mktemp --suffix=.deb) curl -fLsS "$RIG_URL" -o "$TEMP_DEB" sudo apt-get install -y "$TEMP_DEB" rm -f "$TEMP_DEB" fi TARGET_VER="release" if ! rig list | grep -q "release"; then echo -e "${BLUE} LOG:${YELLOW} Installing R (${TARGET_VER})...${NC}" sudo rig add "$TARGET_VER" --without-cran-mirror sudo rig default "$TARGET_VER" fi R_BIN="rig run" fi echo -e "${BLUE} LOG:${YELLOW} Installing 'renv' package globally...${NC}" $R_BIN -e 'if (!require("renv", quietly=TRUE)) install.packages("renv", repos="https://cloud.r-project.org")' echo -e "${GREEN} SUCCESS:${NC} R setup completed."