#!/usr/bin/env bash
# Setzt die Wegwerf-Testinstanz auf. Mehrfach ausfuehrbar.
# Siehe README.md im selben Ordner.
set -euo pipefail

HIER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJEKT="$(dirname "$HIER")"
NAME="audi_ha_test"
PORT="18123"
ZIEL="${AUDI_TEST_CONFIG:-${TMPDIR:-/tmp}/audi-ha-test-config}"
BASIS="http://localhost:${PORT}"

echo "==> Zielordner: $ZIEL"
rm -rf "$ZIEL"
mkdir -p "$ZIEL"

echo "==> Alten Container entfernen (falls vorhanden)"
docker rm -f "$NAME" >/dev/null 2>&1 || true

echo "==> Image laden"
docker pull ghcr.io/home-assistant/home-assistant:stable

echo "==> Container starten"
docker run -d --name "$NAME" -p "${PORT}:8123" -v "$ZIEL:/config" \
  ghcr.io/home-assistant/home-assistant:stable >/dev/null

echo "==> Auf Home Assistant warten"
for _ in $(seq 1 60); do
  if [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 3 "$BASIS/" || true)" != "000" ]; then
    break
  fi
  sleep 5
done

echo "==> Nutzer anlegen und Token erzeugen"
TOKEN="$(node "$HIER/einrichten.mjs" "$BASIS")"
if [ -z "$TOKEN" ]; then
  echo "FEHLER: kein Token erhalten" >&2
  exit 1
fi

echo "==> pyscript installieren"
VERSION="$(curl -s https://api.github.com/repos/custom-components/pyscript/releases/latest \
  | grep -o '"tag_name": *"[^"]*"' | cut -d'"' -f4)"
TMPDL="$(mktemp -d)"
curl -sL -o "$TMPDL/pyscript.zip" \
  "https://github.com/custom-components/pyscript/archive/refs/tags/${VERSION}.zip"
unzip -oq "$TMPDL/pyscript.zip" -d "$TMPDL"
mkdir -p "$ZIEL/custom_components"
cp -r "$TMPDL/pyscript-${VERSION}/custom_components/pyscript" "$ZIEL/custom_components/"
rm -rf "$TMPDL"
echo "    pyscript $VERSION"

echo "==> Projektdateien einspielen"
cp "$HIER/konfiguration.yaml" "$ZIEL/configuration.yaml"
cp -r "$PROJEKT/homeassistant/pyscript" "$ZIEL/pyscript"
mkdir -p "$ZIEL/www" "$ZIEL/audi_dashboard"
cp -r "$PROJEKT/homeassistant/www/." "$ZIEL/www/"
cp "$PROJEKT/homeassistant/data/fahrzeugprofil.example.json" \
  "$ZIEL/audi_dashboard/fahrzeugprofil.json"
cp "$PROJEKT/homeassistant/data/shell_beleg_parser.py" "$ZIEL/audi_dashboard/"
: > "$ZIEL/audi_dashboard/fahrten.jsonl"
: > "$ZIEL/audi_dashboard/tankvorgaenge.jsonl"
printf '%s' "$TOKEN" > "$ZIEL/audi_dashboard/ha_token.txt"

echo "==> Neu starten"
docker restart "$NAME" >/dev/null

echo "==> Auf Backend warten"
for _ in $(seq 1 60); do
  if [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 3 \
      -H "Authorization: Bearer $TOKEN" "$BASIS/api/" || true)" = "200" ]; then
    break
  fi
  sleep 5
done

echo "==> Token nach companion-app/.env.local schreiben"
printf 'VITE_TEST_URL=%s\nVITE_TEST_TOKEN=%s\n' "$BASIS" "$TOKEN" \
  > "$PROJEKT/companion-app/.env.local"

echo
echo "Fertig. $BASIS  ·  Benutzer test  ·  Passwort testtest123"
echo "Token liegt in companion-app/.env.local (gitignored)."
