1. Vorbereitung der Datei (cli_integration-de.md)

Datei: docs/Feature_Spotlight/cli_integration-de.md

2. Das Zsh-Update-Skript

unalias sl 2>/dev/null
unalias s 2>/dev/null



# Funktion zum Abrufen der aktuellen öffentlichen IP
get_current_ip() {
    curl -s https://api.ipify.org
    # curl -s checkip.dyndns.org
}

# Funktion zur Durchführung des Git-Updates
update_github_ip() {
    local NEW_IP=$(get_current_ip)
    local REPO_DIR="/home/[HOME]/[proj]"

    local README_FILE="$REPO_DIR/docs/Feature_Spotlight/cli_integration-de.md"


    local OLD_IP=$(grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" "$README_FILE" | head -n 1) # Annahme: Die IP steht als nackte IP in der README

    # Nur aktualisieren, wenn sich die IP geändert hat
    if [[ "$NEW_IP" != "$OLD_IP" ]]; then
        echo "IP-Adresse hat sich geändert: $OLD_IP -> $NEW_IP. Aktualisiere GitHub..."

        # 1. README-Datei lokal aktualisieren (Logik zum Ersetzen der alten IP durch die neue)
        sed -i "s/$OLD_IP/$NEW_IP/g" "$README_FILE"

        # 2. Git-Befehle ausführen
        cd "$REPO_DIR"

        git add "$README_FILE"
        git commit -m "IP-Update" --no-verify
        git push origin master

        cd - > /dev/null # Zurück zum ursprünglichen Verzeichnis

        echo "GitHub IP-Update abgeschlossen."
    else
        echo "IP unverändert ($NEW_IP). Kein Update nötig."
    fi
}







# -----------------------------------------------
# 1. Funktion zum Starten des Service





start_service() {
    echo "cd ~/[proj]; python3 scripts/py/start_uvicorn_service.py"
}
unalias s 2>/dev/null
s() {
    if [ $# -eq 0 ]; then
        echo "question <your question>"
        return 1
    fi

    update_github_ip

    local TEMP_FILE=$(mktemp)
    local SHORT_TIMEOUT_SECONDS=2
    local LONG_TIMEOUT_SECONDS=70

    # --- 1. try
    timeout $SHORT_TIMEOUT_SECONDS \
    /home/[HOME]/[proj]/.venv/bin/python3 \
    -u \
    /home/[HOME]/[proj]/scripts/py/cli_client.py \
    "$*" \
    --lang \
    "de-DE" < /dev/null > "$TEMP_FILE" 2>&1

    local EXIT_CODE=$?
    local OUTPUT=$(cat "$TEMP_FILE")
    rm "$TEMP_FILE"

    # 1. proof german: Verbindungsfehler gefunden (Service nicht erreichbar)
    if echo "$OUTPUT" | grep -q "Verbindungsfehler (Service nicht erreichbar?):"; then
        echo "ACHTUNG: Verbindungsfehler erkannt!"

        start_service

        echo "BITTE ERNEUT EINGEBEN: s $*"
        return 1

    # 2. Timeout (124) == OR success (0)
    elif [ $EXIT_CODE -eq 124 ] || [ $EXIT_CODE -eq 0 ]; then

        # great EXIT_CODE 0 war, success with short answer
        if [ $EXIT_CODE -eq 0 ]; then
            echo "$OUTPUT"
            return 0
        fi
        echo "answer > $SHORT_TIMEOUT_SECONDS sec. set Timeout= $LONG_TIMEOUT_SECONDS s..."

        local TEMP_FILE_2=$(mktemp)

        timeout $LONG_TIMEOUT_SECONDS \
        /home/[HOME]/[proj]/.venv/bin/python3 \
        -u \
        /home/[HOME]/[proj]/scripts/py/cli_client.py \
        "$*" \
        --lang \
        "de-DE" < /dev/null > "$TEMP_FILE_2" 2>&1

        local EXIT_CODE_2=$?
        local OUTPUT_2=$(cat "$TEMP_FILE_2")
        rm "$TEMP_FILE_2"
        echo "$OUTPUT_2"
        if [ $EXIT_CODE_2 -ne 0 ]; then
             echo "WARNUNG: Timeout > $LONG_TIMEOUT_SECONDS Sec. "
        fi
        return 0
    # (Exit Code > 0, not 124, not connction eror Verbindungsfehler)
    else
        echo "FEHLER: Das Skript ist mit einem allgemeinen Fehler beendet worden."
        echo "$OUTPUT"
        return $EXIT_CODE
    fi
}
# source ~/.zshrc





unalias sl 2>/dev/null
unalias slz 2>/dev/null
# LÖSUNG: Funktion slz() verwendet "$*", um Argumente zusammenzufassen und an 'print -z' zu senden.
sl() {
    if [ $# -eq 0 ]; then
        echo "Nutzung: slz <Ihre Frage, deren Ergebnis in die Zeile eingefügt werden soll>"
        return 1
    fi

    # 1. Befehl ausführen und Ergebnis in die Variable COMMAND speichern
    #    "$*" fasst alle übergebenen Argumente zu EINEM String zusammen, was der CLI-Client erwartet.
    COMMAND=$(/home/[HOME]/[proj]/.venv/bin/python3 \
        /home/[HOME]/[proj]/scripts/py/cli_client.py \
        "$*" --lang "de-DE")

    # 2. Ergebnis mit print -z in die Befehlszeile einfügen
    print -z "$COMMAND"
}



# Funktion zur Ausführung des Services und des Ergebnisses
slxXsoidfuasdzof() {
    if [ $# -eq 0 ]; then
        echo "Nutzung: slx <Ihre Frage, deren Ergebnis ausgeführt werden soll>"
        return 1
    fi

    # Führt den CLI-Client aus und speichert die Ausgabe in der Variable 'COMMAND'
    COMMAND=$(/home/[HOME]/[proj]/.venv/bin/python3 \
        /home/[HOME]/[proj]/scripts/py/cli_client.py \
        "$*" \
        --lang "de-DE")

    # Prüfen, ob eine Ausgabe vorhanden ist
    if [ -n "$COMMAND" ]; then
        echo "--> Ausführen des Befehls: $COMMAND"
        # Führt den gespeicherten String als Shell-Befehl aus
        #########################eval "$COMMAND"
        echo "5.12.'25 10:54 Fri gerade deaktiviert."
    else
        echo "Keine Befehls-Ausgabe vom Service erhalten."
    fi
}