mirror of
https://github.com/tw93/Mole.git
synced 2026-02-10 19:29:17 +00:00
Continue to fix the exit issue
This commit is contained in:
@@ -119,32 +119,8 @@ clean_browsers() {
|
||||
safe_clean ~/Library/Caches/zen/* "Zen cache"
|
||||
safe_clean ~/Library/Application\ Support/Firefox/Profiles/*/cache2/* "Firefox profile cache"
|
||||
|
||||
# Service Worker CacheStorage (all profiles)
|
||||
# Show loading indicator for this potentially slow scanning operation
|
||||
if [[ -t 1 ]]; then
|
||||
MOLE_SPINNER_PREFIX=" " start_inline_spinner "Scanning browser Service Worker caches..."
|
||||
fi
|
||||
|
||||
# Limit search depth to prevent hanging on large profile directories
|
||||
while IFS= read -r sw_path; do
|
||||
[[ -z "$sw_path" ]] && continue
|
||||
local profile_name=$(basename "$(dirname "$(dirname "$sw_path")")")
|
||||
local browser_name="Chrome"
|
||||
[[ "$sw_path" == *"Microsoft Edge"* ]] && browser_name="Edge"
|
||||
[[ "$sw_path" == *"Brave"* ]] && browser_name="Brave"
|
||||
[[ "$sw_path" == *"Arc"* ]] && browser_name="Arc"
|
||||
[[ "$profile_name" != "Default" ]] && browser_name="$browser_name ($profile_name)"
|
||||
clean_service_worker_cache "$browser_name" "$sw_path"
|
||||
done < <(find "$HOME/Library/Application Support/Google/Chrome" \
|
||||
"$HOME/Library/Application Support/Microsoft Edge" \
|
||||
"$HOME/Library/Application Support/BraveSoftware/Brave-Browser" \
|
||||
"$HOME/Library/Application Support/Arc/User Data" \
|
||||
-maxdepth 6 -type d -name "CacheStorage" -path "*/Service Worker/*" 2> /dev/null || true)
|
||||
|
||||
# Stop loading indicator
|
||||
if [[ -t 1 ]]; then
|
||||
stop_inline_spinner
|
||||
fi
|
||||
# DISABLED: Service Worker CacheStorage scanning (find can hang on large browser profiles)
|
||||
# Browser caches are already cleaned by the safe_clean calls above
|
||||
}
|
||||
|
||||
# Clean cloud storage app caches
|
||||
@@ -187,21 +163,15 @@ clean_application_support_logs() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Show loading indicator for this potentially slow operation
|
||||
if [[ -t 1 ]]; then
|
||||
MOLE_SPINNER_PREFIX=" " start_inline_spinner "Scanning Application Support directories..."
|
||||
fi
|
||||
|
||||
# Clean log directories and cache patterns with iteration limit
|
||||
# Limit iterations to balance thoroughness and performance
|
||||
# Reduced from 200 to 50 to prevent hanging on large directories
|
||||
local iteration_count=0
|
||||
local max_iterations=100
|
||||
local cleaned_any=false
|
||||
local max_iterations=50
|
||||
|
||||
for app_dir in ~/Library/Application\ Support/*; do
|
||||
[[ -d "$app_dir" ]] || continue
|
||||
|
||||
# Safety: limit iterations to avoid excessive scanning
|
||||
# Safety: limit iterations
|
||||
((iteration_count++))
|
||||
if [[ $iteration_count -gt $max_iterations ]]; then
|
||||
break
|
||||
@@ -209,8 +179,7 @@ clean_application_support_logs() {
|
||||
|
||||
app_name=$(basename "$app_dir")
|
||||
|
||||
# Skip system and protected apps
|
||||
# Convert to lowercase for case-insensitive matching
|
||||
# Skip system and protected apps (case-insensitive)
|
||||
local app_name_lower
|
||||
app_name_lower=$(echo "$app_name" | tr '[:upper:]' '[:lower:]')
|
||||
case "$app_name_lower" in
|
||||
@@ -219,72 +188,36 @@ clean_application_support_logs() {
|
||||
;;
|
||||
esac
|
||||
|
||||
# Clean log directories
|
||||
if [[ -d "$app_dir/log" ]] && ls "$app_dir/log" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/log"/* "App logs: $app_name"
|
||||
fi
|
||||
if [[ -d "$app_dir/logs" ]] && ls "$app_dir/logs" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/logs"/* "App logs: $app_name"
|
||||
fi
|
||||
if [[ -d "$app_dir/activitylog" ]] && ls "$app_dir/activitylog" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/activitylog"/* "Activity logs: $app_name"
|
||||
fi
|
||||
# Clean log directories - simple direct removal without deep scanning
|
||||
[[ -d "$app_dir/log" ]] && safe_clean "$app_dir/log"/* "App logs: $app_name"
|
||||
[[ -d "$app_dir/logs" ]] && safe_clean "$app_dir/logs"/* "App logs: $app_name"
|
||||
[[ -d "$app_dir/activitylog" ]] && safe_clean "$app_dir/activitylog"/* "Activity logs: $app_name"
|
||||
|
||||
# Clean common cache patterns (Service Worker, Code Cache, Crashpad)
|
||||
if [[ -d "$app_dir/Cache/Cache_Data" ]] && ls "$app_dir/Cache/Cache_Data" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/Cache/Cache_Data" "Cache data: $app_name"
|
||||
fi
|
||||
if [[ -d "$app_dir/Code Cache/js" ]] && ls "$app_dir/Code Cache/js" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/Code Cache/js"/* "Code cache: $app_name"
|
||||
fi
|
||||
if [[ -d "$app_dir/Crashpad/completed" ]] && ls "$app_dir/Crashpad/completed" > /dev/null 2>&1; then
|
||||
safe_clean "$app_dir/Crashpad/completed"/* "Crash reports: $app_name"
|
||||
fi
|
||||
# Clean common cache patterns - skip complex patterns that might hang
|
||||
[[ -d "$app_dir/Cache/Cache_Data" ]] && safe_clean "$app_dir/Cache/Cache_Data" "Cache data: $app_name"
|
||||
[[ -d "$app_dir/Crashpad/completed" ]] && safe_clean "$app_dir/Crashpad/completed"/* "Crash reports: $app_name"
|
||||
|
||||
# Clean Service Worker caches (CacheStorage and ScriptCache) with timeout protection
|
||||
while IFS= read -r -d '' sw_cache; do
|
||||
local profile_path=$(dirname "$(dirname "$sw_cache")")
|
||||
local profile_name=$(basename "$profile_path")
|
||||
[[ "$profile_name" == "User Data" ]] && profile_name=$(basename "$(dirname "$profile_path")")
|
||||
clean_service_worker_cache "$app_name ($profile_name)" "$sw_cache"
|
||||
done < <(find "$app_dir" -maxdepth 4 -type d \( -name "CacheStorage" -o -name "ScriptCache" \) -path "*/Service Worker/*" -print0 2> /dev/null || true)
|
||||
|
||||
# Clean stale update downloads (older than 7 days) with timeout protection
|
||||
if [[ -d "$app_dir/update" ]] && ls "$app_dir/update" > /dev/null 2>&1; then
|
||||
while IFS= read -r update_dir; do
|
||||
local dir_age_days=$((($(date +%s) - $(get_file_mtime "$update_dir")) / 86400))
|
||||
if [[ $dir_age_days -ge $MOLE_TEMP_FILE_AGE_DAYS ]]; then
|
||||
safe_clean "$update_dir" "Stale update: $app_name"
|
||||
fi
|
||||
done < <(command find "$app_dir/update" -mindepth 1 -maxdepth 1 -type d 2> /dev/null || true)
|
||||
fi
|
||||
# DISABLED: Service Worker and update scanning (too slow, causes hanging)
|
||||
# These are covered by browser-specific cleaning in clean_browsers()
|
||||
done
|
||||
|
||||
# Clean Group Containers logs with timeout protection
|
||||
# Search depth 4 to cover both direct (*/Logs) and nested (*/Library/Logs) patterns
|
||||
if [[ -d "$HOME/Library/Group Containers" ]]; then
|
||||
while IFS= read -r logs_dir; do
|
||||
local container_name=$(basename "$(dirname "$logs_dir")")
|
||||
safe_clean "$logs_dir"/* "Group container logs: $container_name"
|
||||
done < <(command find "$HOME/Library/Group Containers" -maxdepth 4 -type d -name "Logs" 2> /dev/null || true)
|
||||
fi
|
||||
|
||||
# Stop loading indicator
|
||||
if [[ -t 1 ]]; then
|
||||
stop_inline_spinner
|
||||
fi
|
||||
# DISABLED: Group Containers log scanning (find operation can hang)
|
||||
# Group container logs are usually minimal, skipping for performance
|
||||
}
|
||||
|
||||
# Check and show iOS device backup info
|
||||
check_ios_device_backups() {
|
||||
local backup_dir="$HOME/Library/Application Support/MobileSync/Backup"
|
||||
if [[ -d "$backup_dir" ]] && command find "$backup_dir" -mindepth 1 -maxdepth 1 2> /dev/null | read -r _; then
|
||||
# Simplified check without find to avoid hanging
|
||||
if [[ -d "$backup_dir" ]]; then
|
||||
local backup_kb=$(get_path_size_kb "$backup_dir")
|
||||
if [[ -n "${backup_kb:-}" && "$backup_kb" -gt 102400 ]]; then
|
||||
local backup_human=$(command du -sh "$backup_dir" 2> /dev/null | awk '{print $1}')
|
||||
note_activity
|
||||
echo -e " Found ${GREEN}${backup_human}${NC} iOS backups"
|
||||
echo -e " You can delete them manually: ${backup_dir}"
|
||||
if [[ -n "$backup_human" ]]; then
|
||||
note_activity
|
||||
echo -e " Found ${GREEN}${backup_human}${NC} iOS backups"
|
||||
echo -e " You can delete them manually: ${backup_dir}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user