password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

commit 2ac8b6577f806b8bd4cbc103d2837ebed68f6778
parent 3a0c8bae77a15976f6b74ed92d57127f7d6cdca6
Author: Brian Mattern <rephorm@rephorm.com>
Date:   Tue, 11 Sep 2012 22:21:21 -0700

Use getopt to regularize options

I like being able to specify command line options (like -c) at the end
of the line (which is usually when I think of the fact that I need
them).

The attached patch uses getopt(1) to regularize the option list so that
lazy people like me can specify the options in any order.

Diffstat:
MREADME | 1+
Msrc/password-store.sh | 62+++++++++++++++++++++++++++++++++++---------------------------
2 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/README b/README @@ -18,3 +18,4 @@ Depends on: - xclip - pwgen - tree +- GNU getopt diff --git a/src/password-store.sh b/src/password-store.sh @@ -115,10 +115,20 @@ fi case "$command" in show|ls|list) clip=0 - if [[ $1 == "--clip" || $1 == "-c" ]]; then - clip=1 - shift + + opts="$(getopt -o c -l clip -n $program -- "$@")" + err=$? + eval set -- "$opts" + while true; do case $1 in + -c|--clip) clip=1; shift ;; + --) shift; break ;; + esac done + + if [[ $err -ne 0 ]]; then + echo "Usage: $program $command [--clip,-c] [pass-name]" + exit 1 fi + path="$1" if [[ -d $PREFIX/$path ]]; then if [[ $path == "" ]]; then @@ -143,18 +153,17 @@ case "$command" in insert) ml=0 noecho=0 - while true; do - if [[ $1 == "--multiline" || $1 == "-m" ]]; then - ml=1 - shift - elif [[ $1 == "--no-echo" || $1 == "-n" ]]; then - noecho=1 - shift - else - break - fi - done - if [[ ( $ml -eq 1 && $noecho -eq 1 ) || $# -ne 1 ]]; then + + opts="$(getopt -o mn -l multiline,no-echo -n $program -- "$@")" + err=$? + eval set -- "$opts" + while true; do case $1 in + -m|--multiline) ml=1; shift ;; + -n|--no-echo) noecho=1; shift ;; + --) shift; break ;; + esac done + + if [[ $err -ne 0 || ( $ml -eq 1 && $noecho -eq 1 ) || $# -ne 1 ]]; then echo "Usage: $program $command [--no-echo,-n | --multiline,-m] pass-name" exit 1 fi @@ -241,18 +250,17 @@ case "$command" in generate) clip=0 symbols="-y" - while true; do - if [[ $1 == "--no-symbols" || $1 == "-n" ]]; then - symbols="" - shift - elif [[ $1 == "--clip" || $1 == "-c" ]]; then - clip=1 - shift - else - break - fi - done - if [[ $# -ne 2 ]]; then + + opts="$(getopt -o nc -l no-symbols,clip -n $program -- "$@")" + err=$? + eval set -- "$opts" + while true; do case $1 in + -n|--no-symbols) symbols=""; shift ;; + -c|--clip) clip=1; shift ;; + --) shift; break ;; + esac done + + if [[ $err -ne 0 || $# -ne 2 ]]; then echo "Usage: $program $command [--no-symbols,-n] [--clip,-c] pass-name pass-length" exit 1 fi