#!/usr/bin/env bash CACHE_FILE="/tmp/git_bw_token_$USER" TOKEN_NAME="Token" get_credentials() { # 1. Versuch: Cache laden if [ -f "$CACHE_FILE" ]; then cat "$CACHE_FILE" return fi # 2. Versuch: Bitwarden abfragen if [ -n "$BW_SESSION" ]; then ITEM_JSON=$(bw get item gitea.iten.pro 2>/dev/null) if [ -n "$ITEM_JSON" ]; then # Wir nutzen BW_USER, um die System-Variable $USER nicht zu überschreiben BW_USER=$(echo "$ITEM_JSON" | jq -r '.login.username') # Korrekte Übergabe der Variable an jq via --arg TOKEN=$(echo "$ITEM_JSON" | jq -r --arg TNAME "$TOKEN_NAME" '.fields[] | select(.name==$TNAME) | .value') if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ]; then # Hier die Variablen nutzen, die wir oben gefüllt haben OUT="username=$BW_USER\npassword=$TOKEN" echo -e "$OUT" > "$CACHE_FILE" chmod 600 "$CACHE_FILE" echo -e "$OUT" return fi fi fi # Fehlermeldung nur, wenn kein Cache da war und BW Abfrage scheiterte printf "\033[1;31mFEHLER:\033[0m Bitwarden ist gesperrt oder Token nicht gefunden! Bitte '\033[1munlock\033[22m' ausführen.\n" >&2 exit 1 } case "$1" in get) get_credentials ;; store|erase) ;; esac