#!/bin/bash # --- Konfiguration --- IMAGE_NAME="gemini-dev-env" CONTAINER_NAME="gemini-session" # --- Aufräumen --- # Sicherstellen, dass der Config-Ordner existiert mkdir -p .gemini-config # Prüfen, ob das Docker-Image existiert und es bei Bedarf bauen 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 Docker-Container auf, falls vorhanden..." docker rm -f "$CONTAINER_NAME" > /dev/null 2>&1 docker rm -f "${CONTAINER_NAME}-temp" > /dev/null 2>&1 # --- Interaktives Setup via dev_session.py --- echo "Starte interaktive Entwicklungs-Session-Konfiguration..." # Erstelle eine temporäre Datei, um die Ausgabe von dev_session.py aufzufangen TEMP_FILE=$(mktemp) # Führe dev_session.py in einem temporären, interaktiven Container aus. # Die Ausgabe (stdout & stderr) wird 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_FILE" # Überprüfe, ob der Docker-Befehl erfolgreich war (exit code 0) if [ ${PIPESTATUS[0]} -ne 0 ]; then echo "------------------------------------------------------------------" echo "❌ Fehler: Der Konfigurationsprozess wurde abgebrochen oder ist fehlgeschlagen." echo "Die Gemini CLI wird nicht gestartet." echo "------------------------------------------------------------------" rm "$TEMP_FILE" exit 1 fi # Extrahiere den reinen CLI-Kontext aus der temporären Datei CLI_CONTEXT=$(sed -n '/---GEMINI_CLI_CONTEXT_START---/,/---GEMINI_CLI_CONTEXT_END---/{//!p}' "$TEMP_FILE") # Lösche die temporäre Datei rm "$TEMP_FILE" # Überprüfe, ob der Kontext extrahiert werden konnte if [ -z "$CLI_CONTEXT" ]; then echo "------------------------------------------------------------------" echo "❌ Fehler: Es konnte kein gültiger Kontext für die Gemini CLI generiert werden." echo "Stelle sicher, dass dev_session.py die Kontext-Marker korrekt ausgibt." echo "Die Gemini CLI wird nicht gestartet." echo "------------------------------------------------------------------" exit 1 fi # --- Start der Haupt-Gemini-Session --- echo "Starte eine neue, interaktive Gemini-Session mit dem generierten Kontext..." # Füge den Systemhinweis zum Container-Namen am Anfang des Kontextes hinzu FULL_CONTEXT="**Wichtiger Systemhinweis:** Das aktuelle Projekt läuft im Docker-Container namens '${CONTAINER_NAME}'. Alle relevanten Befehle müssen in diesem Kontext ausgeführt werden. Führe niemals Befehle wie 'docker build' oder 'docker run' aus. $CLI_CONTEXT" # Starte den finalen Container mit der Gemini CLI # --prompt-interactive übergibt den initialen Kontext docker run -it --rm \ -v "$(pwd):/app" \ -v "$(pwd)/.gemini-config:/root/.config" \ -w /app \ --name "$CONTAINER_NAME" \ "$IMAGE_NAME" gemini --prompt-interactive "$FULL_CONTEXT"