summaryrefslogtreecommitdiff
path: root/packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh
diff options
context:
space:
mode:
authorYves Fischer <yves.fischer@cern.ch>2016-01-15 19:27:34 +0100
committerYves Fischer <yves.fischer@cern.ch>2016-01-15 19:27:34 +0100
commit23c57ff24840c6f612ffd19effbac70a2c218865 (patch)
tree8d1360d385258599586bf3f9568d77ec8cdb6f92 /packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh
parent3b7cbbd6a5652b055aa680a1fc4dc1369079c78d (diff)
downloaddebian-packages-23c57ff24840c6f612ffd19effbac70a2c218865.tar.gz
debian-packages-23c57ff24840c6f612ffd19effbac70a2c218865.zip
cern-scripts: package
Diffstat (limited to 'packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh')
-rwxr-xr-xpackages/cern-scripts/src/main/resources/bin/dmenu-pass.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh b/packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh
new file mode 100755
index 0000000..bb3be7a
--- /dev/null
+++ b/packages/cern-scripts/src/main/resources/bin/dmenu-pass.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+
+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 "$@")
+
+[[ -n $password ]] || exit
+
+while true; do
+ pass show "$password" 2>&1 \
+ | sed -e 's/^pass:.*/pass: XXXX/' \
+ | xmessage -file - \
+ -buttons "Done:1,Copy 'login':2,Copy 'pass':3,Copy all:4" \
+ -default "Done" \
+ -nearmouse -timeout 10
+ case "$?" in
+ 2)
+ pass show "$password" 2>&1 \
+ | sed -ne 's/^login: \(.*\)/\1/p' \
+ | xclip -i -verbose -l 1 2>/dev/null
+ ;;
+ 3)
+ pass show "$password" 2>&1 \
+ | sed -ne 's/^pass: \(.*\)/\1/p' \
+ | xclip -i -verbose -l 1 2>/dev/null
+ ;;
+ 4)
+ pass show "$password" 2>&1 \
+ | xclip -i -verbose -l 1 2>/dev/null
+ ;;
+ *)
+ break
+ ;;
+ esac
+done