summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2020-06-06 11:48:39 -0400
committerKyle Meyer <kyle@kyleam.com>2020-06-06 15:09:59 -0400
commit5495e23781c5223ad9caaa1cbe3a0d0500512812 (patch)
tree3ae3bb4f16776b54bca4537ac6214618476b4924
parent9faded3f5324b83a63d98550cbcef74dcc1e0bd4 (diff)
downloadpiem-5495e23781c5223ad9caaa1cbe3a0d0500512812.tar.gz
Extract patch information from a buffer rather than files
piem-am will become a command that works with mboxes outside of -b4. In this context, it's easier and cleaner to deal with a buffer than temporary files.
-rw-r--r--piem-b4.el7
-rw-r--r--piem.el23
2 files changed, 16 insertions, 14 deletions
diff --git a/piem-b4.el b/piem-b4.el
index a5530e3..487b548 100644
--- a/piem-b4.el
+++ b/piem-b4.el
@@ -121,9 +121,12 @@
(read-directory-name "Git repository: ")))
(`(,cover ,mbox-file)
(piem-b4--get-am-files mid coderepo args))
- (info (piem-series-info cover mbox-file))
(default-directory coderepo))
- (piem-am mbox-file info coderepo)))
+ (piem-am mbox-file
+ (with-temp-buffer
+ (insert-file-contents (or cover mbox-file))
+ (piem-extract-mbox-info))
+ coderepo)))
(define-infix-argument piem-b4-am:--outdir ()
:description "Output directory"
diff --git a/piem.el b/piem.el
index 7b51d34..80e8a35 100644
--- a/piem.el
+++ b/piem.el
@@ -242,18 +242,17 @@ the following information about the patch series:
;;;; Patch handling
-(defun piem-series-info (cover patches)
- "Collect information for a patch series.
-COVER is an mbox with the cover letter, and PATCHES is an
-am-ready mbox. If the series does not have a cover letter (e.g.,
-a one-patch series), COVER may be nil."
- (with-temp-buffer
- (insert-file-contents (or cover patches))
- (let ((info (save-restriction
- (message-narrow-to-head)
- (list :date (message-fetch-field "date")
- :from (message-fetch-field "from")
- :subject (message-fetch-field "subject")))))
+(defun piem-extract-mbox-info (&optional buffer)
+ "Collect information from message in BUFFER.
+If BUFFER is nil, the current buffer is used. Any message after
+the first will be ignored."
+ (with-current-buffer (or buffer (current-buffer))
+ (let ((info (save-excursion
+ (save-restriction
+ (message-narrow-to-head)
+ (list :date (message-fetch-field "date")
+ :from (message-fetch-field "from")
+ :subject (message-fetch-field "subject"))))))
(when (re-search-forward (rx line-start "base-commit: "
(group (>= 40 hex-digit))
line-end)