#!/bin/bash
set -euo pipefail

HOME_ROOT="${1:-$HOME}"
APP_ROOT="${2:-/home/smaraxam/hyreall.com/me}"
MODE="${3:---apply}"

if [ "$MODE" != "--apply" ] && [ "$MODE" != "--dry-run" ]; then
  echo "Usage: bash cleanup-old-deploys.sh [home_root] [app_root] [--apply|--dry-run]" >&2
  exit 1
fi

delete_path() {
  local target="$1"
  if [ ! -e "$target" ]; then
    return
  fi
  if [ "$MODE" = "--dry-run" ]; then
    echo "[dry-run] would remove: $target"
  else
    echo "Removing: $target"
    rm -rf "$target"
  fi
}

echo "Cleanup mode: $MODE"
echo "Home root: $HOME_ROOT"
echo "Live app preserved at: $APP_ROOT"
echo

# Common temporary/extracted upload folders
delete_path "$HOME_ROOT/hyreme-app-upload"
delete_path "$HOME_ROOT/hyreme-app-local-deploy"
delete_path "$HOME_ROOT/hyreme-app-standalone-deploy"

# Common obsolete zip uploads
delete_path "$HOME_ROOT/hyreme-app-local-deploy.zip"
delete_path "$HOME_ROOT/hyreme-app-deploy.zip"
delete_path "$HOME_ROOT/hyreme-app-standalone-deploy.zip"

# Keep the newest 2 deployment backups, remove older ones.
BACKUP_ROOT="$APP_ROOT/.deploy-backups"
if [ -d "$BACKUP_ROOT" ]; then
  mapfile -t BACKUPS < <(find "$BACKUP_ROOT" -mindepth 1 -maxdepth 1 -type d | sort)
  BACKUP_COUNT="${#BACKUPS[@]}"
  if [ "$BACKUP_COUNT" -gt 2 ]; then
    REMOVE_COUNT=$((BACKUP_COUNT - 2))
    for ((i=0; i<REMOVE_COUNT; i++)); do
      delete_path "${BACKUPS[$i]}"
    done
  else
    echo "No old backup folders need removal."
  fi
fi

echo
if [ "$MODE" = "--dry-run" ]; then
  echo "Dry run finished. Re-run with --apply to actually delete files."
else
  echo "Cleanup finished."
fi
