aboutsummaryrefslogtreecommitdiff
path: root/.local/share/pass-extensions/names.bash
diff options
context:
space:
mode:
Diffstat (limited to '.local/share/pass-extensions/names.bash')
-rwxr-xr-x.local/share/pass-extensions/names.bash47
1 files changed, 38 insertions, 9 deletions
diff --git a/.local/share/pass-extensions/names.bash b/.local/share/pass-extensions/names.bash
index e96548f..aa42ebf 100755
--- a/.local/share/pass-extensions/names.bash
+++ b/.local/share/pass-extensions/names.bash
@@ -5,13 +5,42 @@ pass_dir="$(pass directory)"
[ $? -ne 0 ] && exit 1
cd "$pass_dir"
-# List all files in password store (ignoring .git and .extensions folders) and
-# trim './' prefix and '.gpg' suffix
-find -L . \
- -type d -name '.git' -prune \
- -o -type d -name '.extensions' -prune \
- -o -name '*.gpg' \
- -type f \
- -print |\
-cut -c3- | rev | cut -c5- | rev
+usage() {
+ cat << EOF
+usage:
+ pass names [-hl]
+
+options:
+ -l ignore symbolic links in password store
+ -h show this help
+EOF
+ exit $1
+}
+
+ARGC=0
+while getopts lh OPT; do
+ [ $OPTIND -gt $ARGC ] && ARGC=$OPTIND
+ case $OPT in
+ l)
+ opt_ignore_symlinks=y
+ ;;
+ h) usage 0 ;;
+ \?|*) usage 1 ;;
+ esac
+done
+
+find_args=()
+
+if [ -n "$opt_ignore_symlinks" ] ; then
+ find_args+=(-P) # ignore symbolic links
+else
+ find_args+=(-L) # follow symbolic links
+fi
+find_args+=(.)
+find_args+=(-type d -name .git -prune) # skip .git directory
+find_args+=(-o -type d -name .extensions -prune) # skip .extensions directory
+find_args+=(-o -type f -name '*.gpg') # only .gpg files
+find_args+=(-print)
+
+find "${find_args[@]}" | cut -c3- | rev | cut -c5- | rev