#!/bin/bash
# -----------------------------------------------------------------------
# Dynasty Revolution CLI Framework (dynr) - DYNAMIC CORE v2.3.6
# -----------------------------------------------------------------------

VERSION="2.3.6"
BLUE='\033[38;5;45m'; PURPLE='\033[38;5;127m'; GOLD='\033[38;5;178m'; RED='\033[38;5;196m'; NC='\033[0m'
REPO_RAW="https://git.dynastyrevolution.com/DYNR/DynastyRevolution-Scripts/raw/branch/main"
MOD_DIR="/opt/dynr/modules"

load_and_run() {
    local mod=$1
    local remote="$REPO_RAW/modules/$mod"
    if [ ! -f "$MOD_DIR/$mod" ]; then
        echo -e "${GOLD}🐉 Seeking the '$mod' scroll...${NC}"
        if curl -sSLf "$remote" -o "$MOD_DIR/$mod"; then chmod +x "$MOD_DIR/$mod"; 
        else echo -e "${RED}❌ Module '$mod' not found.${NC}"; return 1; fi
    fi
    source "$MOD_DIR/$mod"
    local func_name="run_${mod//-/_}"
    if declare -f "$func_name" > /dev/null; then shift; "$func_name" "$@";
    else echo -e "${RED}❌ Error: Function '$func_name' not defined.${NC}"; fi
}

case "$1" in
    exit|quit) echo -e "${GOLD}🐉 The Dynasty awaits your return. Farewell.${NC}"; exit 0 ;;
    update)
        sudo curl -sSL "$REPO_RAW/core/dynr" -o /usr/local/bin/dynr
        sudo chmod +x /usr/local/bin/dynr
        echo -e "${GOLD}✨ Dynasty Core updated to v$VERSION.${NC}" ;;
    refresh)
        if [[ -z "$2" ]]; then echo "Usage: dynr refresh <mod>"; else rm -f "$MOD_DIR/$2" && load_and_run "$2"; fi ;;
    list) ls "$MOD_DIR" 2>/dev/null | sed 's/^/  ↓ /' || echo "  (Empty)" ;;
    help) load_and_run "help" ;;
    *)
        if [ -z "$1" ]; then
            clear
            echo -e "${PURPLE}🐉 DYNASTY REVOLUTION DYNAMIC CLI v$VERSION${NC}"
            echo -e "Main Commands: ${GOLD}list, update, refresh, exit, help${NC}"
            echo -e "${PURPLE}-------------------------------------------------${NC}"
            read -p "dynr > " AUTO_CMD < /dev/tty
            if [[ "$AUTO_CMD" == "exit" || "$AUTO_CMD" == "quit" ]]; then exit 0;
            elif [[ ! -z "$AUTO_CMD" ]]; then dynr $AUTO_CMD;
            else exit 0; fi
        else load_and_run "$@"
        fi ;;
esac