#!/bin/bash
# Быстрая очистка под освобождение места для Asahi Fedora:
#   - Кэш Homebrew
#   - Docker/Colima (неиспользуемые образы и тома)
#   - Бэкапы iPhone/iPad — только старые (опционально по возрасту)
#   - Xcode DerivedData (если установлен)
#   - ~/.vscode и ~/.windsurf (~0.7 ГБ), если не нужны
#
# Запуск: ./quick-cleanup-asahi.sh [--yes]
#   --yes  выполнить все шаги без запросов подтверждения

set -e
YES="${1:-}"

ask() {
    local msg="$1"
    if [ "$YES" = "--yes" ]; then
        echo "$msg (--yes: пропускаем вопрос)"
        return 0
    fi
    read -p "$msg (y/n): " -n 1 -r
    echo
    [[ $REPLY =~ ^[yYдД]$ ]]
}

echo "=============================================="
echo "  Быстрая очистка для Asahi (освобождение места)"
echo "=============================================="
echo ""

# --- 1. Кэш Homebrew ---
if [ -d "$HOME/Library/Caches/Homebrew" ]; then
    size=$(du -sh "$HOME/Library/Caches/Homebrew" 2>/dev/null | cut -f1)
    echo "1. Кэш Homebrew: $size"
    if ask "   Удалить кэш Homebrew?"; then
        rm -rf "$HOME/Library/Caches/Homebrew"
        echo "   ✅ Кэш Homebrew удалён"
    else
        echo "   Пропущено"
    fi
else
    echo "1. Кэш Homebrew: не найден"
fi
echo ""

# --- 2. Docker / Colima ---
if command -v docker &>/dev/null; then
    echo "2. Docker: использование места:"
    docker system df 2>/dev/null || true
    if ask "   Удалить неиспользуемые образы и тома? (docker image prune -a, volume prune)"; then
        docker image prune -af 2>/dev/null || true
        docker volume prune -f 2>/dev/null || true
        echo "   ✅ Docker очищен"
    else
        echo "   Пропущено"
    fi
else
    echo "2. Docker: не установлен или не в PATH"
fi
echo ""

# --- 3. Бэкапы iPhone/iPad — только старые ---
BACKUP_ROOT="$HOME/Library/Application Support/MobileSync/Backup"
if [ -d "$BACKUP_ROOT" ]; then
    echo "3. Бэкапы iOS (MobileSync):"
    du -sh "$BACKUP_ROOT" 2>/dev/null || true
    for dir in "$BACKUP_ROOT"/*/; do
        [ -d "$dir" ] || continue
        name=$(basename "$dir")
        size=$(du -sh "$dir" 2>/dev/null | cut -f1)
        age_days=$(( ( $(date +%s) - $(stat -f %m "$dir" 2>/dev/null || echo 0) ) / 86400 ))
        echo "   $name — $size, изменён ~$age_days дн. назад"
    done
    echo "   Удалять только вручную или через: Системные настройки → Основные → Хранилище → iOS."
    if ask "   Удалить бэкапы старше 90 дней? (по дате изменения папки)"; then
        deleted=0
        for dir in "$BACKUP_ROOT"/*/; do
            [ -d "$dir" ] || continue
            mtime=$(stat -f %m "$dir" 2>/dev/null || echo 0)
            now=$(date +%s)
            age_days=$(( ( now - mtime ) / 86400 ))
            if [ "$age_days" -gt 90 ]; then
                echo "   Удаление: $dir (старше ${age_days} дн.)"
                rm -rf "$dir" && deleted=$((deleted + 1)) || true
            fi
        done
        echo "   ✅ Удалено бэкапов: $deleted"
    else
        echo "   Пропущено"
    fi
else
    echo "3. Бэкапы iOS: папка не найдена"
fi
echo ""

# --- 4. Xcode (если установлен) ---
XCODE_DD="$HOME/Library/Developer/Xcode/DerivedData"
if [ -d "$XCODE_DD" ]; then
    size=$(du -sh "$XCODE_DD" 2>/dev/null | cut -f1)
    echo "4. Xcode DerivedData: $size"
    if ask "   Удалить DerivedData? (сборки пересоздадутся при следующем открытии проекта)"; then
        rm -rf "$XCODE_DD"
        echo "   ✅ DerivedData удалён"
    else
        echo "   Пропущено"
    fi
else
    echo "4. Xcode DerivedData: не найден"
fi
echo ""

# --- 5. ~/.vscode и ~/.windsurf ---
total_editor=0
for d in "$HOME/.vscode" "$HOME/.windsurf"; do
    [ -d "$d" ] && total_editor=1 && break
done
if [ "$total_editor" -eq 1 ]; then
    echo "5. Редакторы (если пользуетесь только Cursor):"
    [ -d "$HOME/.vscode" ] && echo "   ~/.vscode: $(du -sh "$HOME/.vscode" 2>/dev/null | cut -f1)"
    [ -d "$HOME/.windsurf" ] && echo "   ~/.windsurf: $(du -sh "$HOME/.windsurf" 2>/dev/null | cut -f1)"
    if ask "   Удалить ~/.vscode и ~/.windsurf? (расширения VS Code/Windsurf придётся поставить заново)"; then
        [ -d "$HOME/.vscode" ] && rm -rf "$HOME/.vscode" && echo "   ✅ .vscode удалён"
        [ -d "$HOME/.windsurf" ] && rm -rf "$HOME/.windsurf" && echo "   ✅ .windsurf удалён"
    else
        echo "   Пропущено"
    fi
else
    echo "5. .vscode / .windsurf: не найдены"
fi
echo ""

echo "=============================================="
echo "  Готово. Свободное место:"
df -h / | tail -1
echo "=============================================="
