Compare commits

..

2 commits

Author SHA1 Message Date
846c679353
Add fallback to entry name if no username field
Will look for the username as before within the metadata of the entry,
but if there is no field which satisfies the conditions (by default
being named username, user, or login), will fall back to using the entry
name in pass (i.e. the filename).

fixes #3
2021-12-18 17:14:52 +01:00
87f20b7e05
Extract clipper choice to function 2021-12-18 17:03:37 +01:00

View file

@ -71,6 +71,19 @@ _picker() {
exit 1 exit 1
fi fi
} }
# copies to clipboard, removes any trailing newlines,
# and only keeps it in for 1 paste (1 loop to read in script, 1 to output)
_clipper() {
if command -v wl-copy 1>/dev/null 2>/dev/null; then
wl-copy -o -n
elif command -v xclip 1>/dev/null 2>/dev/null; then
xclip -i -selection 'clipboard' -loops 2 -rmlastnl
elif command -v xsel 1>/dev/null 2>/dev/null; then
xsel -b
else
notify-send "No clipboard utility" "Install wl-copy, xclip or xsel."
fi
}
# parse, see https://unix.stackexchange.com/a/331965/8541 # parse, see https://unix.stackexchange.com/a/331965/8541
_parse_config() { _parse_config() {
@ -164,7 +177,6 @@ clip_password() {
_p_get_field() { _p_get_field() {
local gp_entry="$1" local gp_entry="$1"
local gp_field="$2" local gp_field="$2"
local clip="$3"
# return on first successfully returned key # return on first successfully returned key
for key in $gp_field; do for key in $gp_field; do
@ -173,23 +185,7 @@ _p_get_field() {
# found entry # found entry
if [ -n "$value" ]; then if [ -n "$value" ]; then
echo "$value" && break
if [ -n "$clip" ]; then
# copies to clipboard, removes any trailing newlines,
# and only keeps it in for 1 paste (1 loop to read in script, 1 to output)
if command -v wl-copy; then
echo "$value" | wl-copy -o && break
elif command -v xclip; then
echo "$value" | xclip -i -selection 'clipboard' -loops 2 -rmlastnl && break
elif command -v xsel; then
echo "$value" | xsel -b && break
else
notify-send "No clipboard utility" "Install wl-copy, xclip or xsel."
fi
else
echo "$value" && break
fi
fi fi
done done
} }
@ -207,12 +203,16 @@ _p_get_key_value() {
} }
# return username for argument passed # return username for argument passed
# Prefers in-metadata username, falls back to filename
show_username() { show_username() {
_p_get_field "$1" "${PASS_USERNAME_FIELD}" result=$(_p_get_field "$1" "${PASS_USERNAME_FIELD}")
if [ -z "$result" ]; then
echo "${1##*/}"
fi
} }
clip_username() { clip_username() {
_p_get_field "$1" "${PASS_USERNAME_FIELD}" "-c" show_username "$1" "${PASS_USERNAME_FIELD}" | _clipper
} }
show_field() { show_field() {
@ -220,7 +220,7 @@ show_field() {
} }
clip_field() { clip_field() {
_p_get_field "$1" "$2" "-c" show_field "$1" "$2" | _clipper
} }
list_fields() { list_fields() {