diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/git-credential-rbw | 34 |
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 + ' |