All checks were successful
Update Dispatches / refresh-news (push) Successful in 1s
add system check or system pulse to make sure you can reach remote modules and or if your space is full
138 lines
5.6 KiB
Bash
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}" |