54 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			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-)
 | 
						|
 | 
						|
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
 |