diff --git a/bin/clean.sh b/bin/clean.sh index 05a9ab1..572404a 100755 --- a/bin/clean.sh +++ b/bin/clean.sh @@ -10,8 +10,6 @@ export LANG=C SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/core/common.sh" -# Set up cleanup trap for temporary files -trap cleanup_temp_files EXIT INT TERM source "$SCRIPT_DIR/../lib/core/sudo.sh" source "$SCRIPT_DIR/../lib/clean/brew.sh" source "$SCRIPT_DIR/../lib/clean/caches.sh" @@ -137,6 +135,9 @@ cleanup() { printf "\r\033[K" >&2 fi + # Clean up temporary files + cleanup_temp_files + # Stop sudo session stop_sudo_session diff --git a/bin/uninstall.sh b/bin/uninstall.sh index 59021f5..3e33261 100755 --- a/bin/uninstall.sh +++ b/bin/uninstall.sh @@ -240,7 +240,8 @@ scan_applications() { local spinner_pid="" ( - trap 'exit 0' TERM INT EXIT + cleanup_spinner() { exit 0; } + trap cleanup_spinner TERM INT EXIT local spinner_chars="|/-\\" local i=0 while true; do diff --git a/bin/uninstall_lib.sh b/bin/uninstall_lib.sh index 50af88b..e66bd1c 100755 --- a/bin/uninstall_lib.sh +++ b/bin/uninstall_lib.sh @@ -259,7 +259,8 @@ scan_applications() { # Start a background spinner that reads progress from file local spinner_pid="" ( - trap 'exit 0' TERM INT EXIT + cleanup_spinner() { exit 0; } + trap cleanup_spinner TERM INT EXIT local spinner_chars="|/-\\" local i=0 while true; do diff --git a/lib/clean/app_caches.sh b/lib/clean/app_caches.sh index 047d908..07c51ab 100644 --- a/lib/clean/app_caches.sh +++ b/lib/clean/app_caches.sh @@ -241,12 +241,9 @@ clean_remote_desktop() { # Main function to clean all user GUI applications clean_user_gui_applications() { - start_section_spinner "Scanning app caches..." - - clean_xcode_tools - stop_section_spinner + clean_xcode_tools clean_code_editors clean_communication_apps clean_dingtalk diff --git a/lib/core/ui.sh b/lib/core/ui.sh index b3b82d6..1b3cd6d 100755 --- a/lib/core/ui.sh +++ b/lib/core/ui.sh @@ -255,7 +255,10 @@ start_inline_spinner() { if [[ -t 1 ]]; then ( - trap 'exit 0' TERM INT EXIT + # Clean exit handler for spinner subprocess + cleanup_spinner() { exit 0; } + trap cleanup_spinner TERM INT EXIT + local chars chars="$(mo_spinner_chars)" [[ -z "$chars" ]] && chars="|/-\\"