diff --git a/install.sh b/install.sh index a9c6d29..1b5aab6 100644 --- a/install.sh +++ b/install.sh @@ -5,9 +5,11 @@ # --- 1. OS DETECTION & PATHING --- if [[ "$OSTYPE" == "darwin"* ]]; then - OS_TYPE="macOS"; DYNR_PATH="$HOME/.dynr" + OS_TYPE="macOS" + DYNR_PATH="$HOME/.dynr" else - OS_TYPE="Linux"; DYNR_PATH="/opt/dynr" + OS_TYPE="Linux" + DYNR_PATH="/opt/dynr" fi # --- 2. SOURCE OF TRUTH --- @@ -16,69 +18,85 @@ REPO_RAW="https://git.dynastyrevolution.com/DYNR/DynastyRevolution-Scripts/raw/b 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' +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) --- +# --- 4. FIRST STRIKE (INSTALLATION) --- if [ ! -f "/usr/local/bin/dynr" ]; then + clear + echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}" 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" + + # Create module directory + if [[ "$OS_TYPE" == "macOS" ]]; then + mkdir -p "$DYNR_PATH/modules" + else + sudo mkdir -p "$DYNR_PATH/modules" + fi + + # Download and set permissions 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 + else + echo -e "${RED}❌ Manifestation cancelled.${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/') +# --- 5. PERSISTENT MAIN LOOP --- +while true; do + clear + echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}" + + # --- Pulse Check --- + echo -e "${PURPLE}📡 Dynasty Pulse Check:${NC}" + echo -e " [${GOLD}OK${NC}] OS: $OS_TYPE ($(uname -m))" + # Check NetBird Mesh + 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" + fi + + # Check Gitea Reachability + 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" + fi + + # Check Storage + 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}" + + # --- 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}" + + # --- Main Menu --- + 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}" @@ -95,44 +113,77 @@ if [ -f "/usr/local/bin/dynr" ]; then 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/^/ ☁️ /' + if [[ -z "$CLOUD_DATA" ]]; then + echo -e " ${GOLD}(Offline or No modules found)${NC}" + else + echo "$CLOUD_DATA" | sed 's/^/ ☁️ /' + fi 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}" + echo -e "${GOLD}🔎 Fetching module from cloud...${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/null | sed 's/^/ ❌ /' || echo " (Nothing to remove)" + echo "" 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}" + if [ -f "$DYNR_PATH/modules/$RM_INPUT" ]; then + rm -f "$DYNR_PATH/modules/$RM_INPUT" + echo -e "${GOLD}✅ Module '$RM_INPUT' has been removed.${NC}" + echo -e "Press Enter to continue..." + read < /dev/tty + else + echo -e "${RED}❌ Module not found.${NC}" + sleep 1 + fi fi ;; 3) - # This requires sudo to overwrite /usr/local/bin + echo -e "${BLUE}🔄 Updating Dynasty Framework...${NC}" 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}" + echo -e "${GOLD}✅ System Updated. Press Enter to re-initialize...${NC}" + read < /dev/tty + exec /usr/local/bin/dynr ;; 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" + sudo rm -f /usr/local/bin/dynr + rm -rf "$DYNR_PATH" echo -e "${RED}Framework purged.${NC}" + exit 0 fi ;; - 5) exit 0 ;; - *) echo "Invalid selection." ;; + 5) + # Clean DYNR Exit Art + echo -e "\n${GOLD}" + echo " ____ __ __ _ _ ____ " + echo " | _ \ \ \ / /| \ | || _ \ " + echo " | | | | \ V / | \| || |_) |" + echo " | |_| | | | | |\ || _ < " + echo " |____/ |_| |_| \_||_| \_\\\\" + echo -e "${NC}" + echo -e "${BLUE} 🐉 DEPARTING THE DYNASTY...${NC}" + echo -e "${PURPLE} Safe travels, Architect.${NC}\n" + exit 0 + ;; + *) + echo -e "${RED}Invalid selection.${NC}" + sleep 1 + ;; esac -fi - -echo -e "\n${BLUE}System Initialized. Version: $VERSION${NC}" \ No newline at end of file +done \ No newline at end of file