1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-22 16:45:07 +00:00

fix: skip incomplete downloads that are actively in use

Before deleting .download/.crdownload/.part files, check lsof to
detect open file handles. Files held by an active browser process
are skipped with a warning instead of being deleted.

Fixes a case where a 12GB IPSW being downloaded in Safari was
removed mid-download because the .download bundle matched the glob.
This commit is contained in:
Tw93
2026-03-16 07:39:41 +08:00
parent 30c1a95731
commit cfa0a82057

View File

@@ -71,6 +71,29 @@ _clean_recent_items() {
safe_clean ~/Library/Preferences/com.apple.recentitems.plist "Recent items preferences" || true
}
# Internal: Clean incomplete browser downloads, skipping files currently open.
_clean_incomplete_downloads() {
local -a patterns=(
"$HOME/Downloads/"*.download
"$HOME/Downloads/"*.crdownload
"$HOME/Downloads/"*.part
)
local labels=("Safari incomplete downloads" "Chrome incomplete downloads" "Partial incomplete downloads")
local i=0
for pattern in "${patterns[@]}"; do
local label="${labels[$i]}"
i=$((i + 1))
for f in $pattern; do
[[ -e "$f" ]] || continue
if lsof -F n -- "$f" > /dev/null 2>&1; then
echo -e " ${GRAY}${ICON_WARNING}${NC} Skipping active download: $(basename "$f")"
continue
fi
safe_clean "$f" "$label" || true
done
done
}
# Internal: Clean old mail downloads.
_clean_mail_downloads() {
local mail_age_days=${MOLE_MAIL_AGE_DAYS:-}
@@ -459,9 +482,7 @@ clean_app_caches() {
safe_clean ~/Library/Caches/com.apple.QuickLook.thumbnailcache "QuickLook thumbnails" || true
safe_clean ~/Library/Caches/Quick\ Look/* "QuickLook cache" || true
safe_clean ~/Library/Caches/com.apple.iconservices* "Icon services cache" || true
safe_clean ~/Downloads/*.download "Safari incomplete downloads" || true
safe_clean ~/Downloads/*.crdownload "Chrome incomplete downloads" || true
safe_clean ~/Downloads/*.part "Partial incomplete downloads" || true
_clean_incomplete_downloads
safe_clean ~/Library/Autosave\ Information/* "Autosave information" || true
safe_clean ~/Library/IdentityCaches/* "Identity caches" || true
safe_clean ~/Library/Suggestions/* "Siri suggestions cache" || true