You've already forked Atomcms-edit
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
This commit is contained in:
+13
-6
@@ -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"; }
|
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"; }
|
debug() { [ "$VERBOSE" = true ] && echo -e " ${C_DIM}${E_DOT} [DEBUG] $1${C_RESET}"; log_write "DEBUG" "$1"; }
|
||||||
|
|
||||||
|
IN_INTERACTIVE=false
|
||||||
|
|
||||||
die() {
|
die() {
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${C_BG_RED}${C_WHITE}${C_BOLD} FATAL ERROR ${C_RESET}"
|
echo -e " ${C_BG_RED}${C_WHITE}${C_BOLD} FATAL ERROR ${C_RESET}"
|
||||||
echo -e " ${C_RED}${E_CROSS} $1${C_RESET}"
|
echo -e " ${C_RED}${E_CROSS} $1${C_RESET}"
|
||||||
log_write "FATAL" "$1"
|
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"
|
cleanup_notify_failure "$1"
|
||||||
cursor_show
|
cursor_show
|
||||||
exit 1
|
exit 1
|
||||||
@@ -1365,12 +1372,12 @@ cmd_interactive() {
|
|||||||
echo -en " ${C_CYAN}${C_BOLD}Select [0-19]${C_RESET}: "
|
echo -en " ${C_CYAN}${C_BOLD}Select [0-19]${C_RESET}: "
|
||||||
local choice; read -r choice
|
local choice; read -r choice
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
1) SELECTIVE_UPDATE=""; info "Starting quick update..."; cmd_update ;;
|
1) SELECTIVE_UPDATE=""; IN_INTERACTIVE=true; set +e; info "Starting quick update..."; cmd_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
2) SELECTIVE_UPDATE=""; pick_branch_and_update ;;
|
2) SELECTIVE_UPDATE=""; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
3) SELECTIVE_UPDATE="emulator"; pick_branch_and_update ;;
|
3) SELECTIVE_UPDATE="emulator"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
4) SELECTIVE_UPDATE="client"; pick_branch_and_update ;;
|
4) SELECTIVE_UPDATE="client"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
5) SELECTIVE_UPDATE="renderer"; pick_branch_and_update ;;
|
5) SELECTIVE_UPDATE="renderer"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
6) SELECTIVE_UPDATE="configs"; pick_branch_and_update ;;
|
6) SELECTIVE_UPDATE="configs"; IN_INTERACTIVE=true; set +e; pick_branch_and_update; set -e; IN_INTERACTIVE=false ;;
|
||||||
7)
|
7)
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${C_BOLD}Current: ${C_CYAN}${NITRO_BRANCH:-main}${C_RESET}"
|
echo -e " ${C_BOLD}Current: ${C_CYAN}${NITRO_BRANCH:-main}${C_RESET}"
|
||||||
|
|||||||
Reference in New Issue
Block a user