mirror of
https://github.com/tw93/Mole.git
synced 2026-02-12 05:18:59 +00:00
Fix the system update check problem
This commit is contained in:
23
bin/clean.sh
23
bin/clean.sh
@@ -277,7 +277,7 @@ safe_clean() {
|
|||||||
local count
|
local count
|
||||||
# Quick file count - limit for performance
|
# Quick file count - limit for performance
|
||||||
if [[ "$size" -gt 0 ]]; then
|
if [[ "$size" -gt 0 ]]; then
|
||||||
count=$(find "$path" -type f 2>/dev/null | head -1000 | wc -l | tr -d ' ')
|
count=$(find "$path" -type f 2> /dev/null | head -1000 | wc -l | tr -d ' ')
|
||||||
[[ -z "$count" || ! "$count" =~ ^[0-9]+$ ]] && count=0
|
[[ -z "$count" || ! "$count" =~ ^[0-9]+$ ]] && count=0
|
||||||
else
|
else
|
||||||
count=0
|
count=0
|
||||||
@@ -343,7 +343,7 @@ safe_clean() {
|
|||||||
[[ -z "$size_bytes" || ! "$size_bytes" =~ ^[0-9]+$ ]] && size_bytes=0
|
[[ -z "$size_bytes" || ! "$size_bytes" =~ ^[0-9]+$ ]] && size_bytes=0
|
||||||
# Quick file count for display - limit for performance
|
# Quick file count for display - limit for performance
|
||||||
if [[ "$size_bytes" -gt 0 ]]; then
|
if [[ "$size_bytes" -gt 0 ]]; then
|
||||||
count=$(find "$path" -type f 2>/dev/null | head -1000 | wc -l | tr -d ' ')
|
count=$(find "$path" -type f 2> /dev/null | head -1000 | wc -l | tr -d ' ')
|
||||||
[[ -z "$count" || ! "$count" =~ ^[0-9]+$ ]] && count=0
|
[[ -z "$count" || ! "$count" =~ ^[0-9]+$ ]] && count=0
|
||||||
else
|
else
|
||||||
count=0
|
count=0
|
||||||
@@ -392,13 +392,16 @@ safe_clean() {
|
|||||||
|
|
||||||
# Get size from result file if it exists (parallel processing with temp_dir)
|
# Get size from result file if it exists (parallel processing with temp_dir)
|
||||||
if [[ -n "${temp_dir:-}" && -f "$temp_dir/result_${idx}" ]]; then
|
if [[ -n "${temp_dir:-}" && -f "$temp_dir/result_${idx}" ]]; then
|
||||||
read -r size count < "$temp_dir/result_${idx}" 2>/dev/null || true
|
read -r size count < "$temp_dir/result_${idx}" 2> /dev/null || true
|
||||||
else
|
else
|
||||||
# Get size directly (small batch processing or no temp_dir)
|
# Get size directly (small batch processing or no temp_dir)
|
||||||
size=$(get_path_size_kb "$path" 2>/dev/null || echo "0")
|
size=$(get_path_size_kb "$path" 2> /dev/null || echo "0")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ "$size" == "0" || -z "$size" ]] && { ((idx++)); continue; }
|
[[ "$size" == "0" || -z "$size" ]] && {
|
||||||
|
((idx++))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
# Write parent|size|path to temp file
|
# Write parent|size|path to temp file
|
||||||
echo "$(dirname "$path")|$size|$path" >> "$paths_temp"
|
echo "$(dirname "$path")|$size|$path" >> "$paths_temp"
|
||||||
@@ -687,18 +690,18 @@ perform_cleanup() {
|
|||||||
# Scan for .app bundles - optimized with PlistBuddy and xargs
|
# Scan for .app bundles - optimized with PlistBuddy and xargs
|
||||||
for search_path in "${search_paths[@]}"; do
|
for search_path in "${search_paths[@]}"; do
|
||||||
[[ -d "$search_path" ]] || continue
|
[[ -d "$search_path" ]] || continue
|
||||||
find "$search_path" -maxdepth 3 -name "Info.plist" -path "*/Contents/Info.plist" 2>/dev/null | \
|
find "$search_path" -maxdepth 3 -name "Info.plist" -path "*/Contents/Info.plist" 2> /dev/null |
|
||||||
xargs -I {} /usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" {} 2>/dev/null | \
|
xargs -I {} /usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" {} 2> /dev/null |
|
||||||
grep -v "^$" >> "$installed_bundles" || true
|
grep -v "^$" >> "$installed_bundles" || true
|
||||||
done
|
done
|
||||||
|
|
||||||
# Get running applications - no timeout needed for fast osascript
|
# Get running applications - no timeout needed for fast osascript
|
||||||
osascript -e 'tell application "System Events" to get bundle identifier of every application process' 2>/dev/null | \
|
osascript -e 'tell application "System Events" to get bundle identifier of every application process' 2> /dev/null |
|
||||||
tr ',' '\n' | sed -e 's/^ *//;s/ *$//' -e '/^$/d' >> "$installed_bundles" || true
|
tr ',' '\n' | sed -e 's/^ *//;s/ *$//' -e '/^$/d' >> "$installed_bundles" || true
|
||||||
|
|
||||||
# Get LaunchAgents - fast operation, no timeout needed
|
# Get LaunchAgents - fast operation, no timeout needed
|
||||||
find ~/Library/LaunchAgents /Library/LaunchAgents -name "*.plist" -type f 2>/dev/null | \
|
find ~/Library/LaunchAgents /Library/LaunchAgents -name "*.plist" -type f 2> /dev/null |
|
||||||
xargs -I {} basename {} .plist >> "$installed_bundles" 2>/dev/null || true
|
xargs -I {} basename {} .plist >> "$installed_bundles" 2> /dev/null || true
|
||||||
|
|
||||||
# Deduplicate
|
# Deduplicate
|
||||||
sort -u "$installed_bundles" -o "$installed_bundles"
|
sort -u "$installed_bundles" -o "$installed_bundles"
|
||||||
|
|||||||
@@ -558,18 +558,18 @@ run_with_timeout() {
|
|||||||
(
|
(
|
||||||
sleep "$duration" &
|
sleep "$duration" &
|
||||||
local timer_pid=$!
|
local timer_pid=$!
|
||||||
wait "$cmd_pid" 2>/dev/null && kill "$timer_pid" 2>/dev/null && exit 0
|
wait "$cmd_pid" 2> /dev/null && kill "$timer_pid" 2> /dev/null && exit 0
|
||||||
kill -TERM "$cmd_pid" 2>/dev/null || true
|
kill -TERM "$cmd_pid" 2> /dev/null || true
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
kill -KILL "$cmd_pid" 2>/dev/null || true
|
kill -KILL "$cmd_pid" 2> /dev/null || true
|
||||||
exit 124
|
exit 124
|
||||||
) &
|
) &
|
||||||
local watcher_pid=$!
|
local watcher_pid=$!
|
||||||
|
|
||||||
wait "$cmd_pid" 2>/dev/null
|
wait "$cmd_pid" 2> /dev/null
|
||||||
local exit_code=$?
|
local exit_code=$?
|
||||||
kill "$watcher_pid" 2>/dev/null || true
|
kill "$watcher_pid" 2> /dev/null || true
|
||||||
wait "$watcher_pid" 2>/dev/null || true
|
wait "$watcher_pid" 2> /dev/null || true
|
||||||
return $exit_code
|
return $exit_code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ perform_updates() {
|
|||||||
# Check sudo access
|
# Check sudo access
|
||||||
if ! has_sudo_session; then
|
if ! has_sudo_session; then
|
||||||
if ! ensure_sudo_session "Software updates require admin access"; then
|
if ! ensure_sudo_session "Software updates require admin access"; then
|
||||||
echo -e "${YELLOW}${ICON_WARNING}${NC} Skipping App Store updates (admin authentication required)"
|
echo -e "${YELLOW}☻${NC} App Store updates available — update via System Settings"
|
||||||
echo ""
|
echo ""
|
||||||
((total_count--))
|
((total_count--))
|
||||||
if [[ -n "${MACOS_UPDATE_AVAILABLE:-}" && "${MACOS_UPDATE_AVAILABLE}" == "true" ]]; then
|
if [[ -n "${MACOS_UPDATE_AVAILABLE:-}" && "${MACOS_UPDATE_AVAILABLE}" == "true" ]]; then
|
||||||
@@ -237,8 +237,9 @@ perform_updates() {
|
|||||||
# Update macOS
|
# Update macOS
|
||||||
if [[ -n "${MACOS_UPDATE_AVAILABLE:-}" && "${MACOS_UPDATE_AVAILABLE}" == "true" && "$macos_handled_via_appstore" != "true" ]]; then
|
if [[ -n "${MACOS_UPDATE_AVAILABLE:-}" && "${MACOS_UPDATE_AVAILABLE}" == "true" && "$macos_handled_via_appstore" != "true" ]]; then
|
||||||
if ! has_sudo_session; then
|
if ! has_sudo_session; then
|
||||||
echo -e "${YELLOW}${ICON_WARNING}${NC} Skipping macOS updates (admin authentication required)"
|
echo -e "${YELLOW}☻${NC} macOS updates available — update via System Settings"
|
||||||
echo ""
|
echo ""
|
||||||
|
((total_count--))
|
||||||
else
|
else
|
||||||
_perform_macos_update
|
_perform_macos_update
|
||||||
fi
|
fi
|
||||||
@@ -258,15 +259,18 @@ perform_updates() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Summary
|
# Summary
|
||||||
if [[ $updated_count -eq $total_count && $total_count -gt 0 ]]; then
|
if [[ $total_count -eq 0 ]]; then
|
||||||
|
echo -e "${GRAY}No updates to perform${NC}"
|
||||||
|
return 0
|
||||||
|
elif [[ $updated_count -eq $total_count ]]; then
|
||||||
echo -e "${GREEN}All updates completed (${updated_count}/${total_count})${NC}"
|
echo -e "${GREEN}All updates completed (${updated_count}/${total_count})${NC}"
|
||||||
return 0
|
return 0
|
||||||
elif [[ $updated_count -gt 0 ]]; then
|
elif [[ $updated_count -gt 0 ]]; then
|
||||||
echo -e "${YELLOW}Partial updates completed (${updated_count}/${total_count})${NC}"
|
echo -e "${YELLOW}Partial updates completed (${updated_count}/${total_count})${NC}"
|
||||||
return 1
|
return 0
|
||||||
else
|
else
|
||||||
echo -e "${RED}No updates were completed${NC}"
|
echo -e "${RED}No updates were completed${NC}"
|
||||||
return 1
|
return 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
mole
2
mole
@@ -22,7 +22,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
source "$SCRIPT_DIR/lib/core/common.sh"
|
source "$SCRIPT_DIR/lib/core/common.sh"
|
||||||
|
|
||||||
# Version info
|
# Version info
|
||||||
VERSION="1.11.22"
|
VERSION="1.11.23"
|
||||||
MOLE_TAGLINE="can dig deep to clean your Mac."
|
MOLE_TAGLINE="can dig deep to clean your Mac."
|
||||||
|
|
||||||
# Check if Touch ID is already configured
|
# Check if Touch ID is already configured
|
||||||
|
|||||||
Reference in New Issue
Block a user