From: Olivier Mehani <[email protected]> This allows to output only the selected line, useful for piping.
Also introduce the '-1' shorthand, which is the same as --only=1. Signed-off-by: Olivier Mehani <[email protected]> --- src/password-store.sh | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/password-store.sh b/src/password-store.sh index 63be840..eace832 100755 --- a/src/password-store.sh +++ b/src/password-store.sh @@ -224,7 +224,7 @@ cmd_usage() { List passwords. $PROGRAM find pass-names... List passwords that match pass-names. - $PROGRAM [show] [--clip[=line-number],-c[line-number]] pass-name + $PROGRAM [show] [--clip[=line-number],-c[line-number] | -1,--only[=line-number],-o[line-number]] pass-name Show existing password and optionally put it on the clipboard. If put on the clipboard, it will be cleared in $CLIP_TIME seconds. $PROGRAM grep search-string @@ -295,28 +295,34 @@ cmd_init() { } cmd_show() { - local opts clip_location clip=0 - opts="$($GETOPT -o c:: -l clip:: -n "$PROGRAM" -- "$@")" + local opts clip_location clip=0 only=0 + opts="$($GETOPT -o c::,o::,1 -l clip::,only:: -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in -c|--clip) clip=1; clip_location="${2:-1}"; shift 2 ;; + -o|--only) only=1; clip_location="${2:-1}"; shift 2 ;; + -1) only=1; clip_location="1"; shift 1 ;; --) shift; break ;; esac done - [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip[=line-number],-c[line-number]] [pass-name]" + [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip[=line-number],-c[line-number] | -1,--only[=line-number],-o[line-number]] pass-name" local path="$1" local passfile="$PREFIX/$path.gpg" check_sneaky_paths "$path" if [[ -f $passfile ]]; then - if [[ $clip -eq 0 ]]; then + if [[ $clip -eq 0 && $only -eq 0 ]]; then $GPG -d "${GPG_OPTS[@]}" "$passfile" || exit $? else - [[ $clip_location =~ ^[0-9]+$ ]] || die "Clip location '$clip_location' is not a number." + [[ $clip_location =~ ^[0-9]+$ ]] || die "Password location '$clip_location' is not a number." local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | tail -n +${clip_location} | head -n 1)" - [[ -n $pass ]] || die "There is no password to put on the clipboard at line ${clip_location}." - clip "$pass" "$path" + [[ -n $pass ]] || die "There is no password at line ${clip_location}." + if [[ $clip -eq 0 ]]; then + echo "$pass" + else # default to clipping + clip "$pass" "$path" + fi fi elif [[ -d $PREFIX/$path ]]; then if [[ -z $path ]]; then -- 2.8.2 _______________________________________________ Password-Store mailing list [email protected] http://lists.zx2c4.com/mailman/listinfo/password-store
