#!/usr/bin/env bash
# Very basic interface for pass using wofi

# Get all password files and create an array
root=~/.password-store
CACHE=~/.local/tmp/pass_wofi
seat=seat0

list_passwords() {
    shopt -s nullglob globstar
	cd "${root}" || exit
	pw_list=(**/*.gpg)
	printf '%s\n' "${pw_list[@]%.gpg}" | sort -n

}

prompt='search for passwords...'
SECRET=$(list_passwords | wofi -i --prompt="${prompt}" --dmenu --cache-file ${CACHE})

# Ask whether pass, user or both are required

options=("Password" \
        "User" \
        "User and password" \
        "QR-Code" \
	"OTP")

option=$(printf '%s\n' "${options[@]%}" | wofi -i --dmenu --width 400 --lines 4 --prompt="..." --cache-file /dev/null)

echo $option

case ${option} in
    Password )
	echo "Test"
	wtype $(pass ${SECRET} | head -n 1)
	;;
    User )
	wtype $(pass ${SECRET} | rg user: | awk '{$1 = ""; print $0}')
	;;
    "User and password" )
	wtype $(pass ${SECRET} | rg user: | awk '{$1 = ""; print $0}')
	wtype -k TAB
	wtype $(pass ${SECRET} | head -n 1)
	;;
    "QR-Code" )
	if [[ $SECRET =~ wifi$ ]]; then
	    # Produce a valid wifi QR-code
	    WIFISSID=$(pass get_user ${SECRET})
	    WIFIPASS=$(pass get_pass ${SECRET})
	    WIFIQR="WIFI:T:WPA;S:${WIFISSID};P:${WIFIPASS};;"
	    qrencode -s 8 -o - $WIFIQR | feh --title "pass: QR-WIFI" -
	else
	    # Only password
	    pass show -q1 ${SECRET}
	fi
	;;
    "OTP" )
	wtype $(pass otp ${SECRET})
	;;
esac

# wl-copy -o -s ${seat} ${PASSWD_PASS}