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