spm

Personal fork of spm (simple password manager)

commit 83db637a1d59db7a9a453d74c532719f3912bdfa
parent 65de0301c9f457c0a4a67c7a534fe67e79561c16
Author: Klemens Nanni <kl3@posteo.org>
Date: Wed, 2 Mar 2016 04:09:38 +0100

Match entries on patterns as well

This allows 'tpm show sys*r' or 'tpm show m/f' instead of
'tpm show system/foo/bar' to match the requested entry if and only if it
is the only entry matching the pattern.
1 file changed, 11 insertions(+), 2 deletions(-)
M
tpm
|
13
+++++++++++--
diff --git a/tpm b/tpm
@@ -89,9 +89,18 @@ remove() {
 show() {
   [ -z "${1}" ] && abort "USAGE: tpm show ENTRY"
 
-  [ -e "${STORE_DIR}"/"${1}".gpg ] || abort "The requested entry doesn't exist."
+  entry="${STORE_DIR}"/"${1}".gpg
+
+  if [ ! -e "${entry}" ]; then
+    entry=$(find "${STORE_DIR}" -type f -iwholename "*${1}*".gpg)
+
+    [ -z "${entry}" ] && abort "The requested entry doesn't exist."
+
+    [ "$(printf '%s' "${entry}" | wc -l)" -gt 0 ] \
+      && abort "The given keyword is too ambigious."
+  fi
 
-  gpg2 ${GPG_OPTS} --decrypt "${STORE_DIR}"/"${1}".gpg
+  gpg2 ${GPG_OPTS} --decrypt "${entry}"
 }
 
 ### Parse input ###