aboutsummaryrefslogtreecommitdiffstats
path: root/bin/git-credential-rbw
diff options
context:
space:
mode:
Diffstat (limited to 'bin/git-credential-rbw')
-rwxr-xr-xbin/git-credential-rbw34
1 files changed, 34 insertions, 0 deletions
diff --git a/bin/git-credential-rbw b/bin/git-credential-rbw
new file mode 100755
index 0000000..102aade
--- /dev/null
+++ b/bin/git-credential-rbw
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -f
+
+[ "$1" = get ] || exit
+
+while read -r line; do
+ case $line in
+ protocol=*)
+ protocol=${line#*=} ;;
+ host=*)
+ host=${line#*=} ;;
+ username=*)
+ user=${line#*=} ;;
+ esac
+done
+
+output=
+#shellcheck disable=2154
+for arg in \
+ "${protocol:+$protocol://}$host" \
+ "$host" \
+ "${host2=${host%.*}}" \
+ "${host2#*.}"
+do
+ # exit on first good result
+ [ -n "$user" ] && output=$(rbw get --full "$arg" "$user") && break
+ output=$(rbw get --full "$arg") && break
+done || exit
+
+printf '%s\n' "$output" | sed -n '
+ 1{ s/^/password=/p }
+ s/^Username: /username=/p
+ s/^URI: /host=/p
+ '