#!/usr/bin/env bash
#
# rbw git-credential helper
# Based on https://github.com/lastpass/lastpass-cli/blob/master/contrib/examples/git-credential-lastpass

# A credential helper for git to retrieve usernames and passwords from rbw.
# For general usage, see https://git-scm.com/docs/gitcredentials.
# Here's a quick version:
# 1. Put this somewhere in your path.
# 2. git config --global credential.helper rbw

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
{{ if eq .chezmoi.os "darwin" }}
printf '%s\n' "$output" | gsed -n '
{{- else }}
printf '%s\n' "$output" | sed -n '
{{- end }}
	1{ s/^/password=/p }
	s/^Username: /username=/p
	s/^URI: /host=/p
	'