]> Sergey Matveev's repositories - public-inbox.git/commit
watchmaildir: support multiple watchheader values
authorKyle Meyer <kyle@kyleam.com>
Mon, 20 Apr 2020 00:13:32 +0000 (20:13 -0400)
committerEric Wong <e@yhbt.net>
Mon, 20 Apr 2020 00:59:08 +0000 (00:59 +0000)
commitb3a04ae18a42ed960c89cc81c209633da6976380
tree2589568b9b7a4003d6a3a19c8c27dddb658fc554
parentb3f81ce0c71d5d4eca347f259b5ae69660a2cb13
watchmaildir: support multiple watchheader values

The watchheader key supports only a single value.  Supporting multiple
watchheader values was mentioned in discussion [1] of 8d3e3bd8 (doc:
explain publicinbox.<name>.watchheader, 2019-10-09), and it wasn't
clear if there was a need.

One scenario in which matching multiple headers would be convenient is
when someone wants to set up public-inbox archives for some small
projects but does _not_ want to run mailing lists for them, instead
allowing others to follow the project by any of the pull mechanisms.
Using a common underlying address, an address alias for each project
is configured via a third-party email provider, with messages for each
alias being exposed as a separate public-inbox archive.  In this
setup, messages for an inbox cannot be selected by a List-ID header
but can be identified by the inbox's address in either the To or Cc
header.

To support such a use case, update the watchheader handling to
consider multiple values, accepting a message if it matches any value.
While selecting a message based on matching _any_ rather than _all_
values is motivated by the above scenario, it's worth noting that the
"any" behavior is consistent with how multiple listid config values
are handled.

[1] https://public-inbox.org/meta/20191010085118.r3amey4cayazfycb@dcvr/
Documentation/public-inbox-config.pod
MANIFEST
lib/PublicInbox/Config.pm
lib/PublicInbox/WatchMaildir.pm
lib/PublicInbox/WwwText.pm
t/watch_multiple_headers.t [new file with mode: 0644]