nmbug-status: Add meta.message-url config setting

So you can link to archives other than Gmane.  For example, I'm doing
this in [1].

[1]: https://github.com/wking/nmbug-oci
This commit is contained in:
W. Trevor King 2016-01-01 22:07:41 -08:00 committed by David Bremner
parent e253c94888
commit 031ca3f1bd
2 changed files with 27 additions and 3 deletions

17
NEWS
View file

@ -1,6 +1,23 @@
Notmuch 0.22 (UNRELEASED) Notmuch 0.22 (UNRELEASED)
========================= =========================
nmbug-status
------------
`nmbug-status` now supports `meta.message-url` to override the Gmane
template. For example, you can use:
{
"meta": {
"message-url": "https://groups.google.com/a/opencontainers.org/forum/#!search/messageid$3A%22{message-id}%22"
...
},
...
}
To link to messages in the [opencontainers.org Google
Groups](https://groups.google.com/a/opencontainers.org/forum/#!overview).
Emacs Interface Emacs Interface
--------------- ---------------

View file

@ -19,11 +19,11 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/ . # along with this program. If not, see http://www.gnu.org/licenses/ .
"""Generate HTML for one or more notmuch searches. """Generate text and/or HTML for one or more notmuch searches.
Messages matching each search are grouped by thread. Each message Messages matching each search are grouped by thread. Each message
that contains both a subject and message-id will have the displayed that contains both a subject and message-id will have the displayed
subject link to the Gmane view of the message. subject link to an archive view of the message (defaulting to Gmane).
""" """
from __future__ import print_function from __future__ import print_function
@ -232,6 +232,10 @@ class Page (object):
class HtmlPage (Page): class HtmlPage (Page):
_slug_regexp = re.compile('\W+') _slug_regexp = re.compile('\W+')
def __init__(self, message_url_template, **kwargs):
self.message_url_template = message_url_template
super(HtmlPage, self).__init__(**kwargs)
def _write_header(self, views, stream): def _write_header(self, views, stream):
super(HtmlPage, self)._write_header(views=views, stream=stream) super(HtmlPage, self)._write_header(views=views, stream=stream)
stream.write('<ul>\n') stream.write('<ul>\n')
@ -292,8 +296,9 @@ class HtmlPage (Page):
'message-id': quote(display_data['message-id']), 'message-id': quote(display_data['message-id']),
'subject': xml.sax.saxutils.escape(display_data['subject']), 'subject': xml.sax.saxutils.escape(display_data['subject']),
} }
d['url'] = self.message_url_template.format(**d)
display_data['subject'] = ( display_data['subject'] = (
'<a href="http://mid.gmane.org/{message-id}">{subject}</a>' '<a href="{url}">{subject}</a>'
).format(**d) ).format(**d)
for key in ['message-id', 'from']: for key in ['message-id', 'from']:
if key in display_data: if key in display_data:
@ -405,6 +410,8 @@ _PAGES['text'] = Page()
_PAGES['html'] = HtmlPage( _PAGES['html'] = HtmlPage(
header=header_template.format(**context), header=header_template.format(**context),
footer=footer_template.format(**context), footer=footer_template.format(**context),
message_url_template=config['meta'].get(
'message-url', 'http://mid.gmane.org/{message-id}'),
) )
if args.list_views: if args.list_views: