Hello,

Just wanted to ask what the status of this is. Are there any plans to merge
it?

Thank you.

Best,
Calin

On Fri, Jan 18, 2019 at 11:57 AM Tobias Girstmair <[email protected]>
wrote:

> This is great! Ack from me (whatever little that counts).
>
> lg
>
> On Fri, Jan 18, 2019 at 11:43:49AM +0100, Calin Iorgulescu wrote:
> >Hello,
> >
> >@Tobias:
> >
> >> That's something that has been bugging me for years! Is there any reason
> >> why `generate -m` doesn't expect lines on stdin, like `insert -m` does?
> >>
> >
> >No particular reason. I don't really use the '--multiline' mode as part
> of my workflow, so implementing it as a list of arguments seemed to make
> more sense at the time.
> >
> >@Tristan:
> >
> >> Thanks for this -- this is a wishlist item that I raised here on
> >> December 28.  Your patch is one solution to the problem, but I have to
> >> question why you haven't made your "-m" option for "pass generate" work
> >> the same way it does for "pass insert" (i.e., by reading the extra lines
> >> from stdin rather than from command-line arguments). I think having two
> >> different behaviours for the same command will lead to a lot of
> >> confusion.  (Also, why not provide an additional long option version
> >> named "--multiline", as "pass insert" does?)
> >
> >As I mentioned above to Tobias, this just felt more natural at the time.
> But I agree that having different behaviors for the same flag is confusing.
> Hence this new patch.
> >
> >@Pass Word:
> >> One nice thing about the multiple -m options on the command line is you
> could do something like this:
> >>
> >> -m "user: "$(pass generate -n deleteme 10 2>/dev/null| tail -1)
> >
> >That's a nice use case I hadn't considered! Presumably, one could even
> use a tool like 'pwgen' instead of poluting pass's git history with a
> "deleteme" password.
> >This could still be done using the way that multiline behaves for
> inserts. For example, the same line could be written as:
> >
> >$ echo "user:"$(pwgen 15 1) | pass generate -m widgets.com 30
> >
> >
> >@all:
> >
> >I am glad to see this feature raises some interest! As mentioned above, I
> do think it's worth being consistent with the behavior of '-m' for insert.
> This patch does just that: it aims to implement '-m' in the same way that
> it is done for insert. Additionally, it prints out an error message if '-m'
> is used together with '-i' (as there might be several ways to merge
> existing multiline entries when changing the password in-place).
> >
> >Best,
> >Calin
> >
> >---
> > src/password-store.sh | 19 ++++++++++++++-----
> > 1 file changed, 14 insertions(+), 5 deletions(-)
> >
> >diff --git a/src/password-store.sh b/src/password-store.sh
> >index d89d455..406820a 100755
> >--- a/src/password-store.sh
> >+++ b/src/password-store.sh
> >@@ -276,7 +276,7 @@ cmd_usage() {
> >               overwriting existing password unless forced.
> >           $PROGRAM edit pass-name
> >               Insert a new password or edit an existing password using
> ${EDITOR:-vi}.
> >-          $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i
> | --force,-f] pass-name [pass-length]
> >+          $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i
> | --force,-f] [--multiline,-m] pass-name [pass-length]
> >               Generate a new password of pass-length (or
> $GENERATED_LENGTH if unspecified) with optionally no symbols.
> >               Optionally put it on the clipboard and clear board after
> $CLIP_TIME seconds.
> >               Prompt before overwriting existing password unless forced.
> >@@ -491,8 +491,8 @@ cmd_edit() {
> > }
> >
> > cmd_generate() {
> >-      local opts qrcode=0 clip=0 force=0 characters="$CHARACTER_SET"
> inplace=0 pass
> >-      opts="$($GETOPT -o nqcif -l no-symbols,qrcode,clip,in-place,force
> -n "$PROGRAM" -- "$@")"
> >+      local opts qrcode=0 clip=0 force=0 characters="$CHARACTER_SET"
> inplace=0 multiline=0 pass
> >+      opts="$($GETOPT -o nqcifm -l
> no-symbols,qrcode,clip,in-place,force,multiline -n "$PROGRAM" -- "$@")"
> >       local err=$?
> >       eval set -- "$opts"
> >       while true; do case $1 in
> >@@ -501,10 +501,12 @@ cmd_generate() {
> >               -c|--clip) clip=1; shift ;;
> >               -f|--force) force=1; shift ;;
> >               -i|--in-place) inplace=1; shift ;;
> >+              -m|--multiline) multiline=1; shift ;;
> >               --) shift; break ;;
> >       esac done
> >
> >-      [[ $err -ne 0 || ( $# -ne 2 && $# -ne 1 ) || ( $force -eq 1 &&
> $inplace -eq 1 ) || ( $qrcode -eq 1 && $clip -eq 1 ) ]] && die "Usage:
> $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c] [--qrcode,-q]
> [--in-place,-i | --force,-f] pass-name [pass-length]"
> >+      [[ $err -ne 0 || ( $# -ne 2 && $# -ne 1 ) || ( $force -eq 1 &&
> $inplace -eq 1 ) || ( $qrcode -eq 1 && $clip -eq 1 ) ]] && die "Usage:
> $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c] [--qrcode,-q]
> [--in-place,-i | --force,-f] [--multiline,m] pass-name [pass-length]"
> >+      [[ $inplace -eq 1 && $multiline -eq 1 ]] && die "Error: multiline
> entries are not allowed when replacing a password in-place."
> >       local path="$1"
> >       local length="${2:-$GENERATED_LENGTH}"
> >       check_sneaky_paths "$path"
> >@@ -520,7 +522,14 @@ cmd_generate() {
> >       read -r -n $length pass < <(LC_ALL=C tr -dc "$characters" <
> /dev/urandom)
> >       [[ ${#pass} -eq $length ]] || die "Could not generate password
> from /dev/urandom."
> >       if [[ $inplace -eq 0 ]]; then
> >-              echo "$pass" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o
> "$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
> >+              if [[ $multiline -eq 1 ]]; then
> >+                      echo "Enter contents of $path and press Ctrl+D
> when finished:"
> >+                      echo
> >+              fi
> >+              {
> >+                      echo "$pass"
> >+                      [[ $multiline -eq 1 ]] && cat || true
> >+              } | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile"
> "${GPG_OPTS[@]}" || die "Password encryption aborted."
> >       else
> >               local
> passfile_temp="${passfile}.tmp.${RANDOM}.${RANDOM}.${RANDOM}.${RANDOM}.--"
> >               if { echo "$pass"; $GPG -d "${GPG_OPTS[@]}" "$passfile" |
> tail -n +2; } | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile_temp"
> "${GPG_OPTS[@]}"; then
> >--
> >2.20.1
> >
> >_______________________________________________
> >Password-Store mailing list
> >[email protected]
> >https://lists.zx2c4.com/mailman/listinfo/password-store
>
_______________________________________________
Password-Store mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/password-store

Reply via email to