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

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$SCRIPT_DIR/lib/distro.sh"

echo -e "${BLUE}    LOG:${YELLOW} Detecting R installation strategy for $OS...${NC}"

if is_arch_family; then
    
    echo -e "${BLUE}    LOG:${YELLOW} Arch Linux detected. Using system R (Pacman)...${NC}"
    
    # Install R + Build Tools
    install_status=0
    install_packages r gcc-fortran curl tar || install_status=$?
    if [ "$install_status" -eq 42 ]; then
        exit 0
    elif [ "$install_status" -ne 0 ]; then
        exit "$install_status"
    fi
    
    echo -e "${GREEN}    SUCCESS:${NC} R installed via Pacman."
    
    R_BIN="R"

elif is_debian_family; then

    echo -e "${BLUE}    LOG:${YELLOW} Installing Debian build dependencies...${NC}"
    install_status=0
    install_packages gfortran curl tar ca-certificates || install_status=$?
    if [ "$install_status" -eq 42 ]; then
        exit 0
    elif [ "$install_status" -ne 0 ]; then
        exit "$install_status"
    fi

    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"

elif is_fedora_family; then

    echo -e "${BLUE}    LOG:${YELLOW} Fedora detected. Using system R...${NC}"
    install_status=0
    install_packages R gcc-gfortran curl tar || install_status=$?
    if [ "$install_status" -eq 42 ]; then
        exit 0
    elif [ "$install_status" -ne 0 ]; then
        exit "$install_status"
    fi

    R_BIN="R"

else
    echo -e "${RED}    ERROR:${NC} Unsupported OS: $OS"
    exit 1
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."
