summaryrefslogtreecommitdiff
path: root/git-credential-gbw
diff options
context:
space:
mode:
Diffstat (limited to 'git-credential-gbw')
-rwxr-xr-xgit-credential-gbw49
1 files changed, 49 insertions, 0 deletions
diff --git a/git-credential-gbw b/git-credential-gbw
new file mode 100755
index 0000000..f9d9db3
--- /dev/null
+++ b/git-credential-gbw
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# Function to fetch username and password from Bitwarden
+get_credentials() {
+ local item_name=$1
+
+ # Fetch the login item
+ item=$(bw get item "$item_name" --session "$BW_SESSION")
+
+ # Extract username and password
+ username=$(echo "$item" | jq -r '.login.username')
+ password=$(echo "$item" | jq -r '.login.password')
+
+ echo -e "username=$username\npassword=$password"
+}
+
+# Main logic to handle Git credential helper protocol
+while read -r line; do
+ case "$line" in
+ protocol=*)
+ protocol=${line#protocol=}
+ ;;
+ host=*)
+ host=${line#host=}
+ ;;
+ username=*)
+ username=${line#username=}
+ ;;
+ password=*)
+ password=${line#password=}
+ ;;
+ *)
+ ;;
+ esac
+done
+
+if [ -z "$protocol" ] || [ -z "$host" ]; then
+ exit 1
+fi
+
+# Define your Bitwarden item name
+ITEM_NAME="$host"
+
+# Fetch the credentials
+credentials=$(get_credentials "$ITEM_NAME")
+
+# Output the credentials in the format Git expects
+echo "$credentials"
+