spm

Personal fork of spm (simple password manager)

commit 135cf33b05e2cbb7746412c05848b63596062352
parent 2f2dc9996d98164ad7acd2bc8b0e690b97216cf1
Author: Klemens Nanni <kl3@posteo.org>
Date: Sat, 27 Feb 2016 19:44:57 +0100

List entries on list command
2 files changed, 19 insertions(+), 9 deletions(-)
M
README.pod
|
10
+++++++---
M
tpm
|
18
++++++++++++------
diff --git a/README.pod b/README.pod
@@ -4,7 +4,7 @@ tpm - tiny password manager
 
 =head1 SYNOPSIS
 
-B<tpm> [I<COMMAND> [I<ENTRY>]]
+B<tpm> I<COMMAND> [I<ENTRY>|I<GROUP>]
 
 =head1 DESCRIPTION
 

@@ -19,8 +19,9 @@ I<show> and supplying one entry as a target. If I<insert> is specified
 as a command tpm will create a new entry and prompt for the
 corresponding password. If you specify I<show> as a command tpm will
 write the password for the given entry to standard output. Specifying
-I<help> as command without entry will show how to use tpm. Running tpm
-without any commands lists all existing entries in a tree structure.
+I<help> as command without entry will show how to use tpm. The command
+I<list> will list all entries in the group I<group>. If I<group> is
+omitted, all entries of all groups will be listed.
 
 =head1 ENVIRONMENT
 

@@ -68,6 +69,9 @@ Copy your 'system/root' password to the clipboard using xclip(1):
 
 	$ tpm show system/root | tr -d '\n' | xclip
 
+List all entries of the group 'system':
+	$ tpm list system
+
 =head1 SEE ALSO
 
 gpg2(1), pass(1), pwgen(1), xclip(1)
diff --git a/tpm b/tpm
@@ -53,12 +53,18 @@ readpw() {
 }
 
 usage() {
-  echo "USAGE: tpm (show|insert|help) [ENTRY]"
+  echo "USAGE: tpm (show|insert|list|help) [ENTRY|GROUP]"
 }
 
-all() {
+list() {
   [ -d "${STORE_DIR}" ] || mkdir -p "${STORE_DIR}"
-  tree --prune --noreport "${STORE_DIR}"
+
+  echo "${1}"
+  if [ -n "${1}" ] && [ ! -d "${STORE_DIR}/${1}" ]; then
+      abort "The specified group doesn't exist. See 'tpm list'."
+  fi
+
+  tree --prune --noreport "${STORE_DIR}/${1}"
   echo
 }
 

@@ -123,12 +129,12 @@ case "${1}" in
   "insert")
     insert  "${2}"
     ;;
+  "list")
+    list    "${2}"
+    ;;
   "help")
     usage
     ;;
-  "")
-    all
-    ;;
   *)
     abort   "You didn't specify a valid command. See 'tpm help'."
     ;;