mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 11:31:46 +00:00
54 lines
1.5 KiB
Bash
54 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# System Configuration Maintenance Module.
|
|
# Fix broken preferences and login items.
|
|
|
|
set -euo pipefail
|
|
|
|
# Remove corrupted preference files.
|
|
fix_broken_preferences() {
|
|
local prefs_dir="$HOME/Library/Preferences"
|
|
[[ -d "$prefs_dir" ]] || return 0
|
|
|
|
local broken_count=0
|
|
|
|
while IFS= read -r plist_file; do
|
|
[[ -f "$plist_file" ]] || continue
|
|
|
|
local filename
|
|
filename=$(basename "$plist_file")
|
|
case "$filename" in
|
|
com.apple.* | .GlobalPreferences* | loginwindow.plist)
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
plutil -lint "$plist_file" > /dev/null 2>&1 && continue
|
|
|
|
safe_remove "$plist_file" true > /dev/null 2>&1 || true
|
|
((broken_count++))
|
|
done < <(command find "$prefs_dir" -maxdepth 1 -name "*.plist" -type f 2> /dev/null || true)
|
|
|
|
# Check ByHost preferences.
|
|
local byhost_dir="$prefs_dir/ByHost"
|
|
if [[ -d "$byhost_dir" ]]; then
|
|
while IFS= read -r plist_file; do
|
|
[[ -f "$plist_file" ]] || continue
|
|
|
|
local filename
|
|
filename=$(basename "$plist_file")
|
|
case "$filename" in
|
|
com.apple.* | .GlobalPreferences*)
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
plutil -lint "$plist_file" > /dev/null 2>&1 && continue
|
|
|
|
safe_remove "$plist_file" true > /dev/null 2>&1 || true
|
|
((broken_count++))
|
|
done < <(command find "$byhost_dir" -name "*.plist" -type f 2> /dev/null || true)
|
|
fi
|
|
|
|
echo "$broken_count"
|
|
}
|