Files
DynastyRevolution-Scripts/install.sh
Asainte Bueno-Villanueva fb9cde4b80
All checks were successful
Update Dispatches / refresh-news (push) Successful in 1s
add initial darwin (mac) support
add system check or system pulse to make sure you can reach remote modules and or if your space is full
2026-02-07 23:10:11 -05:00

138 lines
5.6 KiB
Bash

#!/bin/bash
# -----------------------------------------------------------------------
# Dynasty Revolution Universal Installer v2.3.7-pre
# -----------------------------------------------------------------------
# --- 1. OS DETECTION & PATHING ---
if [[ "$OSTYPE" == "darwin"* ]]; then
OS_TYPE="macOS"; DYNR_PATH="$HOME/.dynr"
else
OS_TYPE="Linux"; DYNR_PATH="/opt/dynr"
fi
# --- 2. SOURCE OF TRUTH ---
VERSION="2.3.7-pre"
REPO_RAW="https://git.dynastyrevolution.com/DYNR/DynastyRevolution-Scripts/raw/branch/v2.3.7-pre"
CURRENT_DATE=$(date +"%m-%d-%Y")
# --- 3. STYLING ---
BLUE='\033[38;5;45m'; PURPLE='\033[38;5;127m'; GOLD='\033[38;5;178m'; RED='\033[38;5;196m'; NC='\033[0m'
clear
echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}"
# --- 4. DYNASTY PULSE CHECK (No Sudo Required) ---
echo -e "${PURPLE}📡 Dynasty Pulse Check:${NC}"
# OS Check
echo -e " [${GOLD}OK${NC}] OS: $OS_TYPE ($(uname -m))"
# Mesh Check (Using standard 'netbird status' which is read-only)
if command -v netbird &> /dev/null && netbird status &> /dev/null; then
echo -e " [${GOLD}OK${NC}] Mesh: NetBird Connected"
else
echo -e " [${RED}!!${NC}] Mesh: NetBird Disconnected / Not Installed"
fi
# Repo Check
if curl -o /dev/null -sL --connect-timeout 1 "$REPO_RAW/dispatches.txt"; then
echo -e " [${GOLD}OK${NC}] Repository: Gitea Reachable"
else
echo -e " [${RED}!!${NC}] Repository: Gitea Offline (Local Mode Only)"
fi
# Storage Check
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 90 ]; then
echo -e " [${RED}!!${NC}] Storage: ${DISK_USAGE}% Full - Caution advised."
else
echo -e " [${GOLD}OK${NC}] Storage: ${DISK_USAGE}% Nominal"
fi
echo -e "${PURPLE}-------------------------------------------------${NC}"
# --- 5. NEWS DISPATCH ---
echo -e "${GOLD}📜 LATEST ARCHIVE DISPATCHES:${NC}"
NEWS_DATA=$(curl -sL -A "Mozilla/5.0" --connect-timeout 1 "$REPO_RAW/dispatches.txt")
if [[ -z "$NEWS_DATA" || "$NEWS_DATA" == *"404"* ]]; then
echo -e " ${RED}The Archives are currently silent.${NC}"
else
echo "$NEWS_DATA" | sed "s/^/ /"
fi
echo -e "${PURPLE}-------------------------------------------------${NC}"
# --- 6. FIRST STRIKE (INSTALLATION) ---
if [ ! -f "/usr/local/bin/dynr" ]; then
echo -e "${GOLD}⚠️ Dynasty Framework is not yet manifested on this $OS_TYPE system.${NC}"
read -p "📥 Initiate First Strike (Install)? (y/n): " INSTALL_CONFIRM < /dev/tty
if [[ "$INSTALL_CONFIRM" == "y" || "$INSTALL_CONFIRM" == "Y" ]]; then
echo -e "${BLUE}📡 Manifesting core files in $DYNR_PATH...${NC}"
[[ "$OS_TYPE" == "macOS" ]] && mkdir -p "$DYNR_PATH/modules" || sudo mkdir -p "$DYNR_PATH/modules"
sudo curl -sSL "$REPO_RAW/install.sh" -o /usr/local/bin/dynr
sudo chmod +x /usr/local/bin/dynr
echo -e "${GOLD}✅ System Manifested! Type 'dynr' to begin.${NC}"
exit 0
fi
fi
# --- 7. MAIN MENU ---
if [ -f "/usr/local/bin/dynr" ]; then
CURRENT_VER=$(grep -m 1 "VERSION=" /usr/local/bin/dynr | sed -E 's/.*VERSION="?([^"]*)"?.*/\1/')
echo -e "${GOLD}⚠️ Dynasty Framework (v$CURRENT_VER)${NC}"
echo -e "1) ${BLUE}Quick Strike${NC} (Modules)"
echo -e "2) ${PURPLE}Remove Modules${NC}"
echo -e "3) ${BLUE}Update Framework${NC}"
echo -e "4) ${RED}Uninstall Framework${NC}"
echo "5) Exit"
echo ""
read -p "Selection [1-5]: " OPT < /dev/tty
case $OPT in
1)
echo -e "\n${PURPLE}📜 Local Scrolls ($DYNR_PATH):${NC}"
ls "$DYNR_PATH/modules" 2>/dev/null | sed 's/^/ ↓ /' || echo " (Empty)"
echo -e "\n${BLUE}☁️ Cloud Manifest (Available):${NC}"
CLOUD_DATA=$(curl -sL -A "Mozilla/5.0" --connect-timeout 1 "$REPO_RAW/modules_list.txt" | grep -v "Not found")
[[ -z "$CLOUD_DATA" ]] && echo -e " ${GOLD}(Offline or No modules found)${NC}" || echo "$CLOUD_DATA" | sed 's/^/ ☁️ /'
echo -e "\n${BLUE}Enter module name to run (or 'exit'):${NC}"
read -p "dynr > " CMD_INPUT < /dev/tty
if [[ -n "$CMD_INPUT" && "$CMD_INPUT" != "exit" ]]; then
if [ ! -f "$DYNR_PATH/modules/$CMD_INPUT" ]; then
echo -e "${GOLD}🔎 Fetching module...${NC}"
curl -s -o "$DYNR_PATH/modules/$CMD_INPUT" "$REPO_RAW/modules/$CMD_INPUT"
chmod +x "$DYNR_PATH/modules/$CMD_INPUT"
fi
"$DYNR_PATH/modules/$CMD_INPUT" </dev/tty
fi
;;
2)
echo -e "\n${RED}🗑️ MODULE PURGE PROTOCOL${NC}"
ls "$DYNR_PATH/modules" 2>/dev/null | sed 's/^/ ❌ /' || echo " (Nothing to remove)"
read -p "Enter module name to delete (or 'cancel'): " RM_INPUT < /dev/tty
if [[ -n "$RM_INPUT" && "$RM_INPUT" != "cancel" ]]; then
rm -f "$DYNR_PATH/modules/$RM_INPUT"
echo -e "${GOLD}✅ Module '$RM_INPUT' removed.${NC}"
fi
;;
3)
# This requires sudo to overwrite /usr/local/bin
sudo curl -sSL "$REPO_RAW/install.sh" -o /usr/local/bin/dynr
sudo chmod +x /usr/local/bin/dynr
echo -e "${GOLD}✅ System Updated.${NC}"
;;
4)
read -p "⚠️ Uninstall Framework? (y/n): " UN_CONFIRM < /dev/tty
if [[ "$UN_CONFIRM" == "y" ]]; then
sudo rm -f /usr/local/bin/dynr; rm -rf "$DYNR_PATH"
echo -e "${RED}Framework purged.${NC}"
fi
;;
5) exit 0 ;;
*) echo "Invalid selection." ;;
esac
fi
echo -e "\n${BLUE}System Initialized. Version: $VERSION${NC}"