cli/show: enable --decrypt=stash
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Fri, 11 May 2018 06:57:59 +0000 (02:57 -0400)
committerDavid Bremner <david@tethera.net>
Sat, 26 May 2018 14:43:30 +0000 (07:43 -0700)
commitaa605f7e8a4c5e046503d61fdb953721c32f9d3a
treea6ff27d527404fba5dfb2ae20d4f44adbb14b750
parent9d114a855260b3df194691c9bbf904fa08a3f0d0
cli/show: enable --decrypt=stash

Add fancy new feature, which makes "notmuch show" capable of actually
indexing messages that it just decrypted.

This enables a workflow where messages can come in in the background
and be indexed using "--decrypt=auto".  But when showing an encrypted
message for the first time, it gets automatically indexed.

This is something of a departure for "notmuch show" -- in particular,
because it requires read/write access to the database.  However, this
might be a common use case -- people get mail delivered and indexed in
the background, but only want access to their secret key to happen
when they're directly interacting with notmuch itself.

In such a scenario, they couldn't search newly-delivered, encrypted
messages, but they could search for them once they've read them.

Documentation of this new feature also uses a table form, similar to
that found in the description of index.decrypt in notmuch-config(1).

A notmuch UI that wants to facilitate this workflow while also
offering an interactive search interface might instead make use of
these additional commands while the user is at the console:

Count received encrypted messages (if > 0, there are some things we
haven't yet tried to index, and therefore can't yet search):

     notmuch count tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure

Reindex those messages:

     notmuch reindex --try-decrypt=true tag:encrypted and \
         not property:index.decryption=success and \
         not property:index.decryption=failure
completion/notmuch-completion.bash
doc/man1/notmuch-show.rst
notmuch-show.c
test/T357-index-decryption.sh