#!/usr/bin/env bash

project_dir="$(git rev-parse --show-toplevel)"

if [ -z "$project_dir" ]; then
	exit 1
fi

url="$(git remote get-url origin)"

re="^(https|git)(:\/\/|@)([^\/:]+)[\/:]([^\/:]+)\/(.+)(.git)*$"

if [[ $url =~ $re ]]; then
	#protocol=${BASH_REMATCH[1]}
	#separator=${BASH_REMATCH[2]}
	#hostname=${BASH_REMATCH[3]}
	user=${BASH_REMATCH[4]}
	repo=$(basename -s .git "${BASH_REMATCH[5]}")
fi

project="$user/$repo"

if ! pass "ansible/$project" >/dev/null 2>&1; then
	echo "Error: ansible/$project not found in pass" >&2
	exit 1
fi

pass_content=$(pass "ansible/$project")
pass_path=$project_dir/$(echo "$pass_content" | grep "path:" | cut -d' ' -f2-)

action="${1:-show}"
case "$action" in
	show)
		echo "$pass_content" | head -n 1
		exit 0 ;;
	view)
		ansible-vault view "$pass_path"
		exit 0 ;;
	edit)
		ansible-vault edit "$pass_path"
		exit 0 ;;
	deploy)
		pass show "ansible/$project.file" > "$pass_path"
		exit 0 ;;
	save)
		pass insert -m "ansible/$project.file" < "$pass_path"
		exit 0 ;;
	pass-edit)
		pass edit "ansible/$project"
		exit 0 ;;
	*)
		echo "Usage: ansible-vault-manager [show|view|edit|deploy|save|pass-edit]"
		exit 0 ;;
esac