#!/bin/bash
# Сканирование кандидатов на перенос на внешний носитель (цель — освободить ~100 ГБ).
# Показывает крупные каталоги и опционально — не менявшиеся давно (редко используемые).

OUTPUT_MODE="${1:-size}"   # size | old | both
DAYS_OLD="${2:-90}"        # для old: не менявшиеся N дней

echo "=========================================="
echo "  Кандидаты на перенос (освобождение ~100 ГБ)"
echo "=========================================="
echo ""

echo "=== Крупные каталоги в ~/code (топ по размеру) ==="
du -sh ~/code/* 2>/dev/null | sort -hr | head -20
echo ""

echo "=== Известные тяжёлые каталоги пользователя ==="
for path in \
  "$HOME/code/legal" \
  "$HOME/g.drive mikhevel" \
  "$HOME/Library/Application Support/Telegram Desktop" \
  "$HOME/code/methatron" \
  "$HOME/code/repo-clean-secrets-workdir-20260303-192601" \
  "$HOME/code/archive" \
  "$HOME/code/backups" \
  "$HOME/code/bots" \
  "$HOME/code/sacred_songs" \
  "$HOME/.gradle" \
  "$HOME/Library/Android/sdk" \
  "$HOME/.cursor" \
  "$HOME/.vscode"; do
  if [ -d "$path" ]; then
    du -sh "$path" 2>/dev/null
  fi
done
echo ""

if [ "$OUTPUT_MODE" = "old" ] || [ "$OUTPUT_MODE" = "both" ]; then
  echo "=== Крупные каталоги в ~/code, не менявшиеся ${DAYS_OLD}+ дней (редко используемые) ==="
  find ~/code -maxdepth 2 -type d -mtime +"$DAYS_OLD" -exec du -sh {} \; 2>/dev/null | sort -hr | head -15
  echo ""
fi

echo "=== Свободное место на корневом разделе ==="
df -h / | tail -1
echo ""
echo "Цель: не менее 60 ГБ для Asahi Fedora, рекомендуется 80–100 ГБ."
echo "Подробности: docs/disk_cleanup/MOVE_TO_EXTERNAL_100GB.md"
