#!/bin/bash # Безопасная очистка диска — по списку из docs/disk_cleanup/DISK_CLEANUP.md. # Запрещено удалять: docs/disk_cleanup/DO_NOT_DELETE.md set -e echo "🧹 Безопасная очистка диска (см. DO_NOT_DELETE.md)" echo "==========================================================" echo "" cleanup_dir() { local dir="$1" local name="$2" if [ -d "$dir" ] || [ -f "$dir" ]; then size=$(du -sh "$dir" 2>/dev/null | cut -f1) echo "🗑️ Удаление $name ($size)..." rm -rf "$dir" 2>/dev/null && echo " ✅ $name очищен" || echo " ⚠️ Не удалось удалить $name" else echo " ℹ️ $name не найден, пропускаем" fi } echo "📊 Текущее состояние диска:" df -h / | tail -1 echo "" # 1. Кэши разработки: Colima, npm, node-gyp, TypeScript, pip, .yarn echo "=== 1. Кэши разработки ===" cleanup_dir "$HOME/.colima" "Colima кэш" cleanup_dir "$HOME/Library/Caches/colima" "Colima кэш (Library)" cleanup_dir "$HOME/.npm" "npm кэш" cleanup_dir "$HOME/Library/Caches/node-gyp" "node-gyp кэш" cleanup_dir "$HOME/Library/Caches/typescript" "TypeScript кэш" cleanup_dir "$HOME/Library/Caches/pip" "pip кэш" cleanup_dir "$HOME/.yarn" ".yarn кэш" cleanup_dir "$HOME/Library/Caches/ms-playwright" "Playwright кэш (браузеры для тестов)" echo "" # 2. Кэши браузеров — только Google/Firefox (Brave в DO_NOT_DELETE) echo "=== 2. Кэши браузеров (не Brave) ===" cleanup_dir "$HOME/Library/Caches/Google" "Google кэш" cleanup_dir "$HOME/Library/Caches/Firefox" "Firefox кэш" echo "" # 3. Приложения — Notion, zoom, LibreOffice, Movavi, Ledger (Telegram в DO_NOT_DELETE) echo "=== 3. Кэши приложений ===" cleanup_dir "$HOME/Library/Application Support/Notion" "Notion" cleanup_dir "$HOME/Library/Application Support/zoom.us" "zoom.us" cleanup_dir "$HOME/Library/Application Support/LibreOffice" "LibreOffice" cleanup_dir "$HOME/Library/Application Support/Movavi" "Movavi" cleanup_dir "$HOME/Library/Application Support/Ledger Live" "Ledger Live" echo "" # 4. Cursor — только разрешённые кэши и state backup (~10 GB) echo "=== 4. Cursor кэши (только разрешённые) ===" STATE_BACKUP="$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb.backup" if [ -f "$STATE_BACKUP" ]; then size=$(du -sh "$STATE_BACKUP" 2>/dev/null | cut -f1) echo " state.vscdb.backup ($size) — закрыть Cursor перед удалением!" read -p " Удалить state.vscdb.backup? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then rm -f "$STATE_BACKUP" && echo " ✅ state.vscdb.backup удалён" || echo " ⚠️ Закрой Cursor и повтори" else echo " ⏭️ Пропущено" fi fi cleanup_dir "$HOME/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt" "Cursor ShipIt" cleanup_dir "$HOME/Library/Application Support/Cursor/WebStorage" "Cursor WebStorage" cleanup_dir "$HOME/Library/Application Support/Cursor/Partitions" "Cursor Partitions" cleanup_dir "$HOME/.cursor/projects" "Cursor projects" echo "" # 5. Homebrew, .cache, пустые логи echo "=== 5. Homebrew, .cache, пустые логи ===" cleanup_dir "$HOME/Library/Caches/anytype-updater" "anytype-updater кэш" cleanup_dir "$HOME/Library/Caches/Homebrew" "Homebrew кэш" cleanup_dir "$HOME/.cache" ".cache" find "$HOME/Library/Logs" -type f -size 0 -delete 2>/dev/null && echo " ✅ Пустые логи удалены" || true echo "" # 6. Build артефакты (исключая hunabapp-dev/frontend/android — в DO_NOT_DELETE) echo "=== 6. Build артефакты в ~/code (кроме android) ===" read -p " Удалить build/dist/.next/out? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then find "$HOME/code" -type d \( -name "build" -o -name "dist" -o -name ".next" -o -name "out" \) \ -not -path "*/node_modules/*" \ -not -path "*/venv/*" \ -not -path "*/.venv/*" \ -not -path "*/site-packages/*" \ -not -path "*/env/*" \ -not -path "*/hunabapp-dev/frontend/android/*" \ -exec rm -rf {} + 2>/dev/null || true echo " ✅ Готово" else echo " ⏭️ Пропущено" fi echo "" # 7. node_modules (опционально; НЕ frontend — в DO_NOT_DELETE) echo "=== 7. node_modules (кроме hunabapp-dev/frontend) ===" read -p " Удалить node_modules в проектах? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then find "$HOME/code" -type d -name "node_modules" \ -not -path "*/venv/*" \ -not -path "*/.venv/*" \ -not -path "*/hunabapp-dev/frontend/node_modules" \ -exec rm -rf {} + 2>/dev/null || true echo " ✅ Готово. В нужных проектах: pnpm install" else echo " ⏭️ Пропущено" fi echo "" # 8. UTM виртуальная машина — опционально echo "=== 8. UTM виртуальная машина ===" if [ -d "$HOME/code/Parrot-home-mate-6.4_arm64.utm" ]; then read -p " Удалить UTM виртуальную машину? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then cleanup_dir "$HOME/code/Parrot-home-mate-6.4_arm64.utm" "UTM виртуальная машина" else echo " ⏭️ Пропущено" fi else echo " ℹ️ Не найдена" fi echo "" echo "==========================================================" echo "📊 Состояние диска после очистки:" df -h / | tail -1 echo "" echo "✅ Очистка завершена. Перезапустите приложения при необходимости." echo " Разрешено: docs/disk_cleanup/DISK_CLEANUP.md" echo " Запрещено: docs/disk_cleanup/DO_NOT_DELETE.md" echo ""