1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-22 17:55:08 +00:00

fix(purge): resolve trap conflict between purge.sh and project.sh

- Add guard flag in cleanup_monitor to prevent duplicate execution
- Check for existing trap in project.sh before setting new one
- Prevents crash when user presses Ctrl-C or scan process fails
This commit is contained in:
tw93
2026-02-16 15:54:16 +08:00
parent 1a63b992c6
commit a29cadbfd0
2 changed files with 12 additions and 2 deletions

View File

@@ -68,8 +68,13 @@ perform_purge() {
local stats_dir="${XDG_CACHE_HOME:-$HOME/.cache}/mole" local stats_dir="${XDG_CACHE_HOME:-$HOME/.cache}/mole"
local monitor_pid="" local monitor_pid=""
# Cleanup function # Cleanup function - use flag to prevent duplicate execution
_cleanup_done=false
cleanup_monitor() { cleanup_monitor() {
# Prevent multiple cleanup executions from trap conflicts
[[ "$_cleanup_done" == "true" ]] && return
_cleanup_done=true
# Remove scanning file to stop monitor # Remove scanning file to stop monitor
rm -f "$stats_dir/purge_scanning" 2> /dev/null || true rm -f "$stats_dir/purge_scanning" 2> /dev/null || true

View File

@@ -786,7 +786,12 @@ clean_project_artifacts() {
echo "" echo ""
exit 130 exit 130
} }
trap cleanup_scan INT TERM # Set up signal handling only if not already set by parent script
# This prevents trap conflicts between purge.sh and project.sh
if [[ -z "${_MO_PURGE_TRAP_SET:-}" ]]; then
trap cleanup_scan INT TERM
export _MO_PURGE_TRAP_SET=1
fi
# Scanning is started from purge.sh with start_inline_spinner # Scanning is started from purge.sh with start_inline_spinner
# Launch all scans in parallel # Launch all scans in parallel
for path in "${PURGE_SEARCH_PATHS[@]}"; do for path in "${PURGE_SEARCH_PATHS[@]}"; do