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

    export RIG_HOME="$HOME/.programming/r"
    export RIG_BIN="$RIG_HOME/bin"
    export PATH="$RIG_BIN:$PATH"

    if [ ! -f "$RIG_BIN/rig" ]; then
        echo -e "${BLUE}    LOG:${YELLOW} Downloading Rig binary...${NC}"
        mkdir -p "$RIG_BIN"
        
        LATEST_REL_DATA=$(curl -s https://api.github.com/repos/r-lib/rig/releases/latest)
        RIG_URL=$(echo "$LATEST_REL_DATA" | grep -o 'https://[^"]*rig-linux-[^"]*\.tar\.gz' | head -n 1)
        
        if [ -z "$RIG_URL" ]; then
            echo -e "${RED}    ERROR:${NC} Could not find Rig download URL."
            exit 1
        fi

        TEMP_EXTRACT=$(mktemp -d)
        curl -L -s "$RIG_URL" | tar -xz -C "$TEMP_EXTRACT"
        FOUND_BIN=$(find "$TEMP_EXTRACT" -name "rig" -type f | head -n 1)
        
        if [ -f "$FOUND_BIN" ]; then
            mv "$FOUND_BIN" "$RIG_BIN/rig"
            chmod +x "$RIG_BIN/rig"
        else
            rm -rf "$TEMP_EXTRACT"; exit 1
        fi
        rm -rf "$TEMP_EXTRACT"
    fi

    TARGET_VER="release"
    if ! "$RIG_BIN/rig" list | grep -q "release"; then
        echo -e "${BLUE}    LOG:${YELLOW} Installing R (${TARGET_VER})...${NC}"
        sudo "$RIG_BIN/rig" add "$TARGET_VER" --without-cran-mirror
        sudo "$RIG_BIN/rig" default "$TARGET_VER"
    fi
    
    R_BIN="$RIG_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."