#!/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)."