#!/usr/bin/env bash
set -euo pipefail

DOCKER_DIR="/opt/hx-ki/docker"
cd "$DOCKER_DIR"

echo "==> Schritt 1: Backups der Compose-Dateien anlegen ..."
for f in docker-compose.yml docker-compose.override.yml; do
  if [ -f "$f" ]; then
    cp "$f" "${f}.bak_hxkiweb_$(date +%Y%m%d_%H%M%S)"
    echo "   Backup erstellt: ${f}.bak_hxkiweb_..."
  else
    echo "   Hinweis: $f nicht vorhanden, überspringe."
  fi
done

echo "==> Schritt 2: Eventuelle alte hxki-web Container entfernen ..."
docker rm -f hxki-web docker-hxki-web-1 2>/dev/null || true

echo "==> Schritt 3: In ALLEN Compose-Dateien 'ports:'-Blöcke von hxki-web entfernen ..."
for f in docker-compose.yml docker-compose.override.yml; do
  if [ ! -f "$f" ]; then
    continue
  fi

  echo "   Bearbeite $f ..."
  awk '
    # Start des hxki-web Blocks erkennen (egal wie eingerückt)
    /^[[:space:]]*hxki-web:/ {
      in_hw = 1
      print
      next
    }

    # Wenn wir im hxki-web Block sind und eine Zeile mit \"ports:\" kommt,
    # Ports-Block markieren, aber nicht drucken
    in_hw && $1 == "ports:" {
      in_ports = 1
      next
    }

    # Solange wir im Ports-Block sind:
    in_ports {
      # Zeilen mit \"-\" (Port-Mapping) überspringen
      if ($1 == "-") next
      # Erste Zeile, die kein \"-\" mehr ist -> Ports-Block Ende
      in_ports = 0
    }

    # Wenn wir im hxki-web Block sind und eine leere Zeile kommt,
    # ist der Block als solcher zu Ende
    in_hw && NF == 0 {
      in_hw = 0
      print
      next
    }

    # Alle anderen Zeilen ganz normal drucken
    { print }
  ' "$f" > "$f.tmp" && mv "$f.tmp" "$f"
done

echo "==> Schritt 4: Compose-Konfiguration prüfen (Services auflisten) ..."
docker compose config --services || true

echo "==> Schritt 5: Orchester starten (inkl. Entfernen von Waisen-Containern) ..."
docker compose up -d --remove-orphans

echo "==> Schritt 6: Status von hxki-web prüfen ..."
docker ps | grep hxki-web || echo "   Hinweis: Kein laufender Container mit 'hxki-web' im Namen gefunden."

echo "==> Schritt 7: Caddy neu laden (falls vorhanden) ..."
if docker ps | grep -q hx-caddy-caddy-1; then
  docker exec -it hx-caddy-caddy-1 caddy reload || echo "   Hinweis: Caddy-Reload hat eine Warnung produziert."
else
  echo "   Hinweis: Caddy-Container hx-caddy-caddy-1 läuft nicht oder heißt anders."
fi

echo "==> FERTIG: Alle ports:-Blöcke für hxki-web entfernt, Orchester läuft neu."
