From: martin f. krafft Date: Thu, 24 Apr 2025 09:12:38 +0000 (+0200) Subject: add getlogin function X-Git-Url: https://git.madduck.net/etc/pass.git/commitdiff_plain/HEAD?ds=sidebyside add getlogin function --- diff --git a/.gitignore.d/pass b/.gitignore.d/pass index 6d0a468..9480707 100644 --- a/.gitignore.d/pass +++ b/.gitignore.d/pass @@ -5,3 +5,4 @@ !/.zsh/aliases/genpw !/.zsh/aliases/getpw !/.zsh/aliases/pmnpw +!/.zsh/zshrc/parts.d/50-pass diff --git a/.zsh/zshrc/parts.d/50-pass b/.zsh/zshrc/parts.d/50-pass new file mode 100644 index 0000000..da55c20 --- /dev/null +++ b/.zsh/zshrc/parts.d/50-pass @@ -0,0 +1,36 @@ +getlogin() { + local pw uid + parse_pass_output() { + local key rest pw + while read key rest; do + if [ -z "$pw" ]; then + pw="$key" + echo "pw=$pw" + continue + fi + + if [ -z "$uid" ] && [ -n "$rest" ]; then + case "${key%:}" in + login|user|username|id|userid) echo uid="$rest"; break;; + esac + fi + done + } + + eval $(pass "$1" | parse_pass_output) + + [ -n "$uid" ] || uid="${1##*/}" + + xclip_() { + # -quiet is not: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103990 + xclip -rmlastnl -loops 1 -selection clipboard -quiet 2>/dev/null + } + + echo >&2 "Go paste the UID: $uid" + echo "$uid" | xclip_ + echo >&2 "Now go paste the password" + echo "$pw" | xclip_ +} +compdef getlogin=pass + +# vim:ft=zsh