From 2c079c125c10704a029ccb00addfadde49cd24d4 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 25 Jun 2026 20:17:58 +0200 Subject: [PATCH] fix: interactive menu no longer crashes on update errors - Add IN_INTERACTIVE flag to detect interactive mode - die() now returns to menu instead of exiting in interactive mode - Update options (1-6) run with 'set +e' to prevent crash on errors - 'set -e' restored after update completes - Errors are logged and shown as warnings, menu keeps running --- update-Nitrov3.sh | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/update-Nitrov3.sh b/update-Nitrov3.sh index e0f56de..d908902 100755 --- a/update-Nitrov3.sh +++ b/update-Nitrov3.sh @@ -219,11 +219,18 @@ warn() { echo -e " ${C_YELLOW}${E_WARN}${C_RESET} $1"; WARNINGS=$((WARNIN fail() { echo -e " ${C_RED}${E_CROSS}${C_RESET} $1"; log_write "FAIL" "$1"; } debug() { [ "$VERBOSE" = true ] && echo -e " ${C_DIM}${E_DOT} [DEBUG] $1${C_RESET}"; log_write "DEBUG" "$1"; } +IN_INTERACTIVE=false + die() { echo "" echo -e " ${C_BG_RED}${C_WHITE}${C_BOLD} FATAL ERROR ${C_RESET}" echo -e " ${C_RED}${E_CROSS} $1${C_RESET}" log_write "FATAL" "$1" + if [ "$IN_INTERACTIVE" = true ]; then + WARNINGS=$((WARNINGS + 1)) + echo -e " ${C_YELLOW}Returning to menu...${C_RESET}" + return 1 2>/dev/null || true + fi cleanup_notify_failure "$1" cursor_show exit 1 @@ -1365,12 +1372,12 @@ cmd_interactive() { echo -en " ${C_CYAN}${C_BOLD}Select [0-19]${C_RESET}: " local choice; read -r choice case "$choice" in - 1) SELECTIVE_UPDATE=""; info "Starting quick update..."; cmd_update ;; - 2) SELECTIVE_UPDATE=""; pick_branch_and_update ;; - 3) SELECTIVE_UPDATE="emulator"; pick_branch_and_update ;; - 4) SELECTIVE_UPDATE="client"; pick_branch_and_update ;; - 5) SELECTIVE_UPDATE="renderer"; pick_branch_and_update ;; - 6) SELECTIVE_UPDATE="configs"; pick_branch_and_update ;; + 1) SELECTIVE_UPDATE=""; IN_INTERACTIVE=true; set +e; info "Starting quick update..."; cmd_update; set -e; IN_INTERACTIVE=false ;; + 2) SELECTIVE_UPDATE=""; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;; + 3) SELECTIVE_UPDATE="emulator"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;; + 4) SELECTIVE_UPDATE="client"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;; + 5) SELECTIVE_UPDATE="renderer"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;; + 6) SELECTIVE_UPDATE="configs"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;; 7) echo "" echo -e " ${C_BOLD}Current: ${C_CYAN}${NITRO_BRANCH:-main}${C_RESET}"