#!/usr/bin/env bash
. $HOME/.bin/_config
set -x

shopt -s nullglob globstar

prefix=${PASSWORD_STORE_DIR-~/.password-store}
password_files=( "$prefix"/**/*.gpg )
password_files=( "${password_files[@]#"$prefix"/}" )
password_files=( "${password_files[@]%.gpg}" )
password=$(printf '%s\n' "${password_files[@]}" | $DMENU_CMD -p Password)

[[ -n $password ]] || exit

# read password file
password_out=$(pass "$password" 2> /dev/null)


copy_password() {
    # copy password line
    printf "%s" "$password_out" | head -1 | xclip -r

    # extract additional information
    password_info=$(printf "%s" "$password_out" | grep -Ei -m 1 'login|user|email')
    #url_info=$(printf "%s" "$password_out" | grep -Ei '^url' | awk -F"[ :]*" '{ $1=""; print $0 }' )

    # show desktop notification
    if [[ -n $password_info ]]; then
        NOTIFY_CMD "$(printf '%s' "$password_info")"
    else
        NOTIFY_CMD "No username provided."
    fi
}

copy_otp() {
    password_otp=$(pass otp "$password" 2> /dev/null)
    printf "%s" "$password_otp" | xclip -r
    NOTIFY_CMD "$password_otp"

}

if echo "$password_out" | grep -q otpauth
then
    sel=$(printf 'Copy Password\nCopy OTP' | $DMENU_CMD -p Copy)
    case $sel in
    *Password) copy_password; ;;
    *OTP) copy_otp; ;;
    esac
else
    copy_password
fi

