#!/bin/bash

# ═══════════════════════════════════════════════════════
#  🧹 Mac 清理大師 — 雙擊即跑
# ═══════════════════════════════════════════════════════

clear
echo ""
echo "╔══════════════════════════════════════════╗"
echo "║     🧹 Mac 清理大師 v1.0                ║"
echo "║     幫你清掉垃圾，讓 Mac 跑快一點       ║"
echo "╚══════════════════════════════════════════╝"
echo ""
echo "⚠️  這個程式會清除以下內容："
echo "   • 系統快取 (Cache)"
echo "   • 應用程式快取"
echo "   • 瀏覽器暫存檔"
echo "   • 系統 Log 檔案"
echo "   • npm / pip / brew 快取"
echo "   • Xcode DerivedData（如果有的話）"
echo "   • iOS 備份暫存"
echo "   • 回收桶"
echo ""
echo "──────────────────────────────────────────────"
echo ""

TOTAL_FREED=0

get_size() {
    local path="$1"
    if [ -d "$path" ]; then
        du -sm "$path" 2>/dev/null | awk '{print $1}'
    else
        echo "0"
    fi
}

clean_folder() {
    local path="$1"
    local name="$2"
    if [ -d "$path" ]; then
        local size=$(get_size "$path")
        if [ "$size" -gt 0 ] 2>/dev/null; then
            rm -rf "$path" 2>/dev/null
            mkdir -p "$path" 2>/dev/null
            TOTAL_FREED=$((TOTAL_FREED + size))
            echo "   ✅ $name — 清掉 ${size} MB"
        else
            echo "   ⏭️  $name — 已經很乾淨"
        fi
    fi
}

clean_glob() {
    local pattern="$1"
    local name="$2"
    local size=0
    for d in $pattern; do
        if [ -d "$d" ]; then
            s=$(du -sm "$d" 2>/dev/null | awk '{print $1}')
            size=$((size + s))
            rm -rf "$d" 2>/dev/null
        fi
    done
    if [ "$size" -gt 0 ] 2>/dev/null; then
        TOTAL_FREED=$((TOTAL_FREED + size))
        echo "   ✅ $name — 清掉 ${size} MB"
    else
        echo "   ⏭️  $name — 已經很乾淨"
    fi
}

echo "🔍 開始掃描清理..."
echo ""

# ─── 1. 系統快取 ───
echo "📁 [1/8] 系統快取 (Caches)"
clean_folder "$HOME/Library/Caches" "使用者快取"
clean_folder "/Library/Caches" "系統快取"
echo ""

# ─── 2. 應用程式暫存 ───
echo "📁 [2/8] 應用程式暫存"
clean_folder "$HOME/Library/Application Support/CrashReporter" "崩潰報告"
clean_folder "$HOME/Library/Logs" "應用程式 Log"
clean_folder "/Library/Logs" "系統 Log"
clean_folder "/private/var/log" "系統 Log (var)"
echo ""

# ─── 3. 瀏覽器暫存 ───
echo "🌐 [3/8] 瀏覽器暫存"
clean_folder "$HOME/Library/Caches/Google/Chrome" "Chrome 快取"
clean_folder "$HOME/Library/Caches/com.apple.Safari" "Safari 快取"
clean_folder "$HOME/Library/Caches/Firefox" "Firefox 快取"
clean_folder "$HOME/Library/Caches/Microsoft Edge" "Edge 快取"
echo ""

# ─── 4. npm / pip / brew 快取 ───
echo "📦 [4/8] 開發工具快取"
clean_folder "$HOME/.npm/_cacache" "npm 快取"
clean_folder "$HOME/Library/Caches/pip" "pip 快取"
clean_folder "$HOME/Library/Caches/Homebrew" "Homebrew 快取"
clean_folder "$HOME/.cache/yarn" "yarn 快取"
clean_folder "$HOME/.gradle/caches" "Gradle 快取"
echo ""

# ─── 5. Xcode ───
echo "🔨 [5/8] Xcode 相關"
clean_folder "$HOME/Library/Developer/Xcode/DerivedData" "Xcode DerivedData"
clean_folder "$HOME/Library/Developer/Xcode/Archives" "Xcode Archives"
clean_folder "$HOME/Library/Developer/CoreSimulator/Caches" "模擬器快取"
echo ""

# ─── 6. iOS 備份暫存 ───
echo "📱 [6/8] iOS 暫存"
clean_folder "$HOME/Library/Application Support/MobileSync/Backup" "iOS 備份暫存"
echo ""

# ─── 7. 臨時檔案 ───
echo "🗑️  [7/8] 臨時檔案"
clean_glob "/tmp/*" "系統暫存 /tmp"
clean_folder "$HOME/.Trash" "回收桶"
echo ""

# ─── 8. Docker（如果有的話）───
echo "🐳 [8/8] Docker（如果有的話）"
if command -v docker &> /dev/null; then
    docker system prune -f 2>/dev/null
    echo "   ✅ Docker 垃圾已清理"
else
    echo "   ⏭️  沒有安裝 Docker"
fi
echo ""

# ─── 結果 ───
echo "══════════════════════════════════════════"
echo ""
if [ "$TOTAL_FREED" -gt 0 ]; then
    echo "🎉 清理完成！共釋放了 ** ${TOTAL_FREED} MB ** 空間"
else
    echo "✨ 你的 Mac 已經很乾淨了！"
fi
echo ""

# 顯示磁碟使用狀況
echo "📊 目前磁碟使用狀況："
echo ""
df -h / | tail -1 | awk '{printf "   總空間: %s | 已用: %s (%s) | 可用: %s\n", $2, $3, $5, $4}'
echo ""

echo "💡 建議：如果还是很慢，可以檢查一下："
echo "   1. 開啟「活動監視器」看哪個程式吃最多 CPU/記憶體"
echo "   2. 重開機一次（系統偏好設定 → 軟體更新 → 重新啟動）"
echo "   3. 檢查硬碟空間是否低於 10%"
echo ""
echo "──────────────────────────────────────────────"
echo "按任意鍵關閉視窗..."
read -n 1 -s
