#!/bin/bash

# Definiere den Namen für das Docker-Image und den Container
IMAGE_NAME="gemini-dev-env"
CONTAINER_NAME="gemini-dev-session"

# Sicherstellen, dass der Config-Ordner existiert
mkdir -p .gemini-config

# Prüfen, ob das Docker-Image existiert
if ! docker image inspect "$IMAGE_NAME" &> /dev/null;
then
    echo "Docker-Image '$IMAGE_NAME' nicht gefunden. Baue es jetzt aus 'gemini.Dockerfile'..."
    docker build -t "$IMAGE_NAME" -f gemini.Dockerfile .
    if [ $? -ne 0 ]; then
        echo "FEHLER: Docker-Image konnte nicht gebaut werden."
        exit 1
    fi
fi

echo "Räume alte '$CONTAIN_NAME' und temporäre Container auf, falls vorhanden..."
docker rm -f "$CONTAINER_NAME" > /dev/null 2>&1
docker rm -f "${CONTAINER_NAME}-temp" > /dev/null 2>&1

echo "Starte eine neue, interaktive Gemini-Session..."

# Erstelle eine temporäre Datei, um die Ausgabe der dev_session zu speichern
TEMP_OUTPUT_FILE=$(mktemp)

# Führe dev_session.py interaktiv aus (-it). Die Ausgabe wird via `tee`
# gleichzeitig im Terminal angezeigt UND in die temporäre Datei geschrieben.
docker run -it --rm \
  -v "$(pwd):/app" \
  -v "$(pwd)/.gemini-config:/root/.config" \
  -w /app \
  --name "${CONTAINER_NAME}-temp" \
  "$IMAGE_NAME" \
  python3 dev_session.py 2>&1 | tee "$TEMP_OUTPUT_FILE"

# Extrahiere den CLI-Kontext aus der temporären Datei
CLI_CONTEXT=$(sed -n '/---GEMINI_CLI_CONTEXT_START---/,/---GEMINI_CLI_CONTEXT_END---/{//!p}' "$TEMP_OUTPUT_FILE")

# Lösche die temporäre Datei
rm "$TEMP_OUTPUT_FILE"

# Die Ausgabe wurde bereits angezeigt, wir können direkt die CLI starten.
echo "--- Initialisiere Gemini CLI mit dem ausgewählten Kontext... ---"

# Starte die Gemini CLI mit dem extrahierten Kontext
# Die --initial-prompt Option sorgt dafür, dass der Kontext als erste Eingabe dient
docker run -it --rm \
  -v "$(pwd):/app" \
  -v "$(pwd)/.gemini-config:/root/.config" \
  -w /app \
  --name "$CONTAINER_NAME" \
  "$IMAGE_NAME" \
  gemini --prompt-interactive "$CLI_CONTEXT"

# Nach Beendigung der Session (z.B. durch Strg+C) wird aufgeräumt
echo "Session beendet."
