.dotfiles/.bin/ansible-vault-manager

51 lines
994 B
Bash
Executable file

#!/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-)
case "$1" in
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
;;
esac
echo "$pass_content" | head -n 1