discussion and development of piem
 help / color / mirror / code / Atom feed
* [PATCH 1/2] piem: Add :gnu-package keyword to piem-inboxes
@ 2023-06-08 16:59 jlicht
  2023-06-08 16:59 ` [PATCH 2/2] gnus: Skip adding mboxrd from-line when not needed jlicht
                   ` (2 more replies)
  0 siblings, 3 replies; 29+ messages in thread
From: jlicht @ 2023-06-08 16:59 UTC (permalink / raw)
  To: piem; +Cc: Jelle Licht

From: Jelle Licht <jlicht@fsfe.org>

With the `:gnu-package` keyword, users can configure a regex to match
against the X-GNU-PR-PACKAGE email header for the GNU Bug Tracker.
---
 Documentation/piem.texi |  6 ++++++
 piem.el                 | 18 +++++++++++++-----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/Documentation/piem.texi b/Documentation/piem.texi
index 26962a4..99185d3 100644
--- a/Documentation/piem.texi
+++ b/Documentation/piem.texi
@@ -168,6 +168,12 @@ repository (e.g., if the inbox receives patches for multiple projects,
 or if you use a few dedicated Git worktrees for different types of
 patches), set @code{:coderepo} to a list of locations.
 
+@cindex issue tracking
+@cindex Debbugs, issue tracking system
+When using the Debbugs instance at @uref{https://bugs.gnu.org} to
+retrieve messages, an inbox can mapped to each message by setting
+@code{:gnu-package} for an inbox.
+
 @findex piem-merged-inboxes
 @vindex piem-get-inboxes-from-config
 If you mirror some inboxes locally (e.g., for fast local access or for
diff --git a/piem.el b/piem.el
index 568e91b..b910893 100644
--- a/piem.el
+++ b/piem.el
@@ -83,6 +83,8 @@ list that supports the following properties:
       A URL hosting HTTPS archives.
   :maildir
       A Maildir directory to inject messages into.
+  :gnu-package
+      A GNU Bug Tracker label to match with for the inbox.
 
 Here's an example for the public-inbox project itself:
 
@@ -393,7 +395,7 @@ files."
                   (rx string-start "publicinbox."
                       (group (one-or-more not-newline)) "."
                       (group
-                       (or "address" "coderepo" "listid" "maildir" "url"))
+                       (or "address" "coderepo" "listid" "maildir" "url" "gnu-package"))
                       string-end)
                   key)
              (let* ((inbox-name (match-string 1 key))
@@ -493,12 +495,14 @@ non-nil, make the match specific for that message."
 This should be called from a buffer containing a message and is
 intended to be used by libraries implementing a function for
 `piem-get-inbox-functions'."
-  (pcase-let ((`(,listid ,to ,cc)
-               (piem--message-fetch-decoded-fields '("list-id" "to" "cc"))))
+  (pcase-let ((`(,listid ,to ,cc ,x-gnu-pr-package)
+               (piem--message-fetch-decoded-fields
+                '("list-id" "to" "cc" "x-gnu-pr-package"))))
     (catch 'hit
       (dolist (inbox (piem-merged-inboxes))
         (let* ((info (cdr inbox))
-               (p-listid (plist-get info :listid)))
+               (p-listid (plist-get info :listid))
+               (p-package (plist-get info :gnu-package)))
           (when (and listid
                      p-listid
                      (string-match-p (concat "<" (regexp-quote p-listid) ">")
@@ -508,7 +512,11 @@ intended to be used by libraries implementing a function for
                      (to (mapconcat #'identity (list to cc)
                                     " ")))
             (when (string-match-p (regexp-quote addr) to)
-              (throw 'hit (car inbox)))))))))
+              (throw 'hit (car inbox))))
+          (when (and x-gnu-pr-package
+                     p-package
+                     (string-match-p (regexp-quote p-package) x-gnu-pr-package))
+            (throw 'hit (car inbox))))))))
 
 (defun piem-inbox ()
   "Return the current buffer's inbox."
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2023-06-11  0:55 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-08 16:59 [PATCH 1/2] piem: Add :gnu-package keyword to piem-inboxes jlicht
2023-06-08 16:59 ` [PATCH 2/2] gnus: Skip adding mboxrd from-line when not needed jlicht
2023-06-09 12:48 ` [PATCH v2 0/5] New piem-debbugs integration jlicht
2023-06-09 12:48   ` [PATCH v2 1/5] piem: Add :gnu-package keyword to piem-inboxes jlicht
2023-06-10  4:52     ` Kyle Meyer
2023-06-10 10:02       ` Jelle Licht
2023-06-09 12:48   ` [PATCH v2 2/5] gnus: Skip adding mboxrd from-line when not needed jlicht
2023-06-10  4:55     ` Kyle Meyer
2023-06-10 10:07       ` Jelle Licht
2023-06-09 12:48   ` [PATCH v2 3/5] piem: Add piem-inbox-by-gnu-package-match jlicht
2023-06-10  4:57     ` Kyle Meyer
2023-06-10 10:08       ` Jelle Licht
2023-06-09 12:48   ` [PATCH v2 4/5] gnus: Add support for matching inbox by X-GNU-PR-PACKAGE header jlicht
2023-06-10  4:58     ` Kyle Meyer
2023-06-10 10:08       ` Jelle Licht
2023-06-09 12:48   ` [PATCH v2 5/5] Add basic integration for debbugs jlicht
2023-06-10  4:59     ` Kyle Meyer
2023-06-10 10:11       ` Jelle Licht
2023-06-10  5:00   ` [PATCH v2 0/5] New piem-debbugs integration Kyle Meyer
2023-06-10  9:58 ` [PATCH v3 " jlicht
2023-06-10  9:58   ` [PATCH v3 1/5] piem: Add :gnu-package keyword to piem-inboxes jlicht
2023-06-10  9:58   ` [PATCH v3 2/5] gnus: Skip adding mboxrd from-line when not needed jlicht
2023-06-10  9:58   ` [PATCH v3 3/5] piem: Add piem-inbox-by-gnu-package-match jlicht
2023-06-10 23:17     ` Kyle Meyer
2023-06-10  9:58   ` [PATCH v3 4/5] piem-inbox-by-header-match: Fallback to matching via :gnu-package jlicht
2023-06-10  9:58   ` [PATCH v3 5/5] Add basic integration for debbugs jlicht
2023-06-10 23:16   ` [PATCH v3 0/5] New piem-debbugs integration Kyle Meyer
2023-06-10 23:46     ` Jelle Licht
2023-06-11  0:55       ` Kyle Meyer

Code repositories for project(s) associated with this public inbox

	https://git.kyleam.com/piem/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).