#!/bin/bash

if ! command -v gum &> /dev/null; then
    echo "Ошибка: 'gum' не установлен. Установите его: https://github.com/charmbracelet/gum"
    exit 1
fi

DIR="${1}"
if [[ -z "$DIR" || ! -d "$DIR" ]]; then
    echo "Использование: $0 /путь/к/каталогу"
    exit 1
fi

echo "Анализируем каталог: $DIR"
echo

biggest_files=$(find "$DIR" -type f -exec du -b {} + 2>/dev/null \
    | sort -nr | head -n 10 \
    | awk '{printf "[BIG] %s (%s байт)\n", $2, $1}')

oldest_files=$(find "$DIR" -type f -printf "%T@ %p\n" 2>/dev/null \
    | sort -n | head -n 10 \
    | while read -r line; do
        timestamp=$(echo "$line" | cut -d' ' -f1)
        filepath=$(echo "$line" | cut -d' ' -f2-)
        humandate=$(date -d @"$timestamp" +"%Y-%m-%d %H:%M:%S")
        printf "[OLD] %s (%s)\n" "$filepath" "$humandate"
    done)

combined=$(printf "%s\n%s\n%s\n%s" \
  "------ 🔠 10 САМЫХ БОЛЬШИХ ФАЙЛОВ ------" \
  "$biggest_files" \
  "------ 🕒 10 САМЫХ СТАРЫХ ФАЙЛОВ ------" \
  "$oldest_files")

echo "🧹 Выберите файлы для удаления:"
selected=$(echo "$combined" | gum choose --no-limit --height=22)

to_delete=$(echo "$selected" \
    | grep -v '^------' \
    | sed -E 's/^\[(BIG|OLD)\] //' \
    | sed -E 's/ \(([^)]*)\)$//' \
    | sort -u)

# Подтверждение
if [[ -z "$to_delete" || "$to_delete" == $'\n' ]]; then
    echo "❌ Ничего не выбрано для удаления."
    exit 0
fi

echo
echo "❗️Файлы, которые будут удалены:"
echo "$to_delete"

gum confirm "Вы действительно хотите удалить эти файлы?" && echo "$to_delete" | xargs -d '\n' rm -f && echo "✅ Удаление завершено."