cli/reply: make --decrypt take a keyword

This brings the --decrypt argument to "notmuch reply" into line with
the other --decrypt arguments (in "show", "new", "insert", and
"reindex").  This patch is really just about bringing consistency to
the user interface.

We also use the recommended form in the emacs MUA when replying, and
update test T350 to match.
This commit is contained in:
Daniel Kahn Gillmor 2017-12-19 11:40:55 -05:00 committed by David Bremner
parent 8ea4a99d74
commit af8255fb71
5 changed files with 27 additions and 20 deletions

View file

@ -351,7 +351,7 @@ _notmuch_reply()
return
;;
--decrypt)
COMPREPLY=( $( compgen -W "true false" -- "${cur}" ) )
COMPREPLY=( $( compgen -W "true auto false" -- "${cur}" ) )
return
;;
esac

View file

@ -72,20 +72,26 @@ Supported options for **reply** include
in this order, and copy values from the first that contains
something other than only the user's addresses.
``--decrypt``
Decrypt any MIME encrypted parts found in the selected content
(ie. "multipart/encrypted" parts). Status of the decryption will
be reported (currently only supported with --format=json and
--format=sexp) and on successful decryption the
multipart/encrypted part will be replaced by the decrypted
content.
``--decrypt=(false|auto|true)``
If a session key is already known for the message, then it
will be decrypted automatically unless the user explicitly
sets ``--decrypt=false``.
If ``true``, decrypt any MIME encrypted parts found in the
selected content (i.e., "multipart/encrypted" parts). Status
of the decryption will be reported (currently only supported
with --format=json and --format=sexp), and on successful
decryption the multipart/encrypted part will be replaced by
the decrypted content.
Decryption expects a functioning **gpg-agent(1)** to provide any
needed credentials. Without one, the decryption will likely fail.
If ``auto``, and a session key is already known for the
message, then it will be decrypted, but notmuch will not try
to access the user's secret keys.
Use ``false`` to avoid even automatic decryption.
Non-automatic decryption expects a functioning
**gpg-agent(1)** to provide any needed credentials. Without
one, the decryption will likely fail.
Default: ``auto``
See **notmuch-search-terms(7)** for details of the supported syntax for
<search-terms>.

View file

@ -181,7 +181,7 @@ mutiple parts get a header."
reply
original)
(when process-crypto
(setq args (append args '("--decrypt"))))
(setq args (append args '("--decrypt=true"))))
(if reply-all
(setq args (append args '("--reply-to=all")))

View file

@ -704,8 +704,6 @@ notmuch_reply_command (notmuch_config_t *config, int argc, char *argv[])
};
int format = FORMAT_DEFAULT;
int reply_all = true;
bool decrypt = false;
bool decrypt_set = false;
notmuch_opt_desc_t options[] = {
{ .opt_keyword = &format, .name = "format", .keywords =
@ -719,7 +717,12 @@ notmuch_reply_command (notmuch_config_t *config, int argc, char *argv[])
(notmuch_keyword_t []){ { "all", true },
{ "sender", false },
{ 0, 0 } } },
{ .opt_bool = &decrypt, .name = "decrypt", .present = &decrypt_set },
{ .opt_keyword = (int*)(&params.crypto.decrypt), .name = "decrypt",
.keyword_no_arg_value = "true", .keywords =
(notmuch_keyword_t []){ { "false", NOTMUCH_DECRYPT_FALSE },
{ "auto", NOTMUCH_DECRYPT_AUTO },
{ "true", NOTMUCH_DECRYPT_NOSTASH },
{ 0, 0 } } },
{ .opt_inherit = notmuch_shared_options },
{ }
};
@ -729,8 +732,6 @@ notmuch_reply_command (notmuch_config_t *config, int argc, char *argv[])
return EXIT_FAILURE;
notmuch_process_shared_options (argv[0]);
if (decrypt_set)
params.crypto.decrypt = decrypt ? NOTMUCH_DECRYPT_NOSTASH : NOTMUCH_DECRYPT_FALSE;
notmuch_exit_if_unsupported_format ();

View file

@ -384,7 +384,7 @@ test_expect_equal_json \
"$expected"
test_begin_subtest "reply to encrypted message"
output=$(notmuch reply --decrypt subject:"test encrypted message 002" \
output=$(notmuch reply --decrypt=true subject:"test encrypted message 002" \
| notmuch_drop_mail_headers In-Reply-To References)
expected='From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: test encrypted message 002