#!/usr/bin/env bash
# tv-debloat-undo.sh – Rückweg zu tv-debloat.sh: Pakete wieder installieren und aktivieren
#
#   ./tv-debloat-undo.sh -f tv-debloat-20261008-120000.log          # Trockenlauf (Standard)
#   ./tv-debloat-undo.sh --apply -f tv-debloat-20261008-120000.log  # wirklich ausführen
#   ./tv-debloat-undo.sh --apply paket.eins paket.zwei
#
# Je Paket (nach Prüfung mit „pm list packages“):
#   - für den Benutzer entfernt  → cmd package install-existing --user 0 <paket>
#   - deaktiviert                → pm enable --user 0 <paket>
#   - aktiv                      → nichts zu tun
#   - auf dem Gerät unbekannt    → übersprungen (so ein Paket hilft nur noch der Werksreset oder ein APK)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=tv-lib.sh
. "$SCRIPT_DIR/tv-lib.sh"

usage() { sed -n '2,12p' "$0" | sed 's/^# \{0,1\}//'; exit "${1:-0}"; }

APPLY=0
PACKAGES=""

while [ $# -gt 0 ]; do
  case "$1" in
    --apply) APPLY=1 ;;
    --dry-run) APPLY=0 ;;
    -f|--file)
      [ $# -ge 2 ] || usage 1
      PACKAGES="$PACKAGES
$(tv_read_list "$2")"
      shift ;;
    -h|--help) usage 0 ;;
    -*) tv_die "Unbekannte Option: $1" ;;
    *) PACKAGES="$PACKAGES
$1" ;;
  esac
  shift
done

PACKAGES="$(printf '%s\n' "$PACKAGES" | grep -v '^$' | sort -u || true)"
[ -n "$PACKAGES" ] || usage 1

tv_connect
tv_load_packages
[ "$APPLY" -eq 1 ] || tv_info "Trockenlauf – es wird nichts verändert. Mit --apply ausführen."

run() {
  if [ "$APPLY" -eq 1 ]; then
    if tv_shell "$@" >/dev/null; then tv_info "erledigt      $*"; else tv_info "FEHLER        $*"; fi
  else
    tv_info "würde         adb -s $TV_HOST shell $*"
  fi
}

while IFS= read -r pkg; do
  if ! tv_valid_package "$pkg"; then
    tv_info "übersprungen  $pkg (kein gültiger Paketname)"; continue
  fi
  case "$(tv_pkg_state "$pkg")" in
    aktiv)       tv_info "schon aktiv   $pkg" ;;
    fehlt)       tv_info "unbekannt     $pkg (auf diesem Gerät nicht vorhanden)" ;;
    deaktiviert) run pm enable --user "$TV_USER" "$pkg" ;;
    entfernt)
      run cmd package install-existing --user "$TV_USER" "$pkg"
      run pm enable --user "$TV_USER" "$pkg" ;;
  esac
done <<<"$PACKAGES"
