diff options
author | Kyle Meyer <kyle@kyleam.com> | 2020-05-10 22:03:37 -0400 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2020-05-10 22:22:17 -0400 |
commit | 33a7b658e537683d892bc195b463435199595a3a (patch) | |
tree | 4dc91889140bd76339be15cb20221f5280996b5f | |
parent | 0b81766bb74f79dc87cfa53e081c6cd4787d94a2 (diff) | |
download | piem-33a7b658e537683d892bc195b463435199595a3a.tar.gz |
b4: Rework call-process helper to handle git calls
The subprocess handling needs reworked and polished, so this helper
likely won't stay around in its current form for long, but it's still
useful to send git through it so that a failure signals an error and
shows the output.
-rw-r--r-- | piem-b4.el | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -56,22 +56,27 @@ ;;; Internals -(define-error 'piem-b4-error "b4 error") +(define-error 'piem-b4-error "piem-b4 error") (defconst piem-b4-output-buffer "*piem-b4-output*") ;; TODO: Use an asynchronous process. -(defun piem-b4--call-b4 (&rest args) - (unless piem-b4-b4-executable - (user-error "piem-b4-b4-executable must be non-nil")) +(defun piem-b4--call (program infile &rest args) (let ((temp-buffer-show-function (lambda (_)))) (with-output-to-temp-buffer piem-b4-output-buffer - (unless (= 0 (apply #'call-process piem-b4-b4-executable - nil standard-output nil + (unless (= 0 (apply #'call-process program + infile standard-output nil (remq nil args))) (display-buffer piem-b4-output-buffer) (signal 'piem-b4-error - (list (format "b4 call in %s failed" default-directory))))))) + (list (format "%s call in %s failed" + program default-directory))))))) + +(defun piem-b4--call-b4 (infile &rest args) + (apply #'piem-b4--call piem-b4-b4-executable infile args)) + +(defun piem-b4--call-git (infile &rest args) + (apply #'piem-b4--call piem-b4-git-executable infile args)) ;; In many cases, we don't really need b4 to download the mbox for us, ;; as we already have our own mbox to URL mapping. Perhaps we should @@ -93,7 +98,7 @@ ;; Move to the coderepo so that we pick up any b4 configuration ;; from there. (let ((default-directory coderepo)) - (apply #'piem-b4--call-b4 "am" + (apply #'piem-b4--call-b4 nil "am" (and custom-p (concat "--use-local-mbox=" mbox-thread)) (concat "--outdir=" outdir) @@ -110,7 +115,7 @@ (defun piem-b4-am-ready-from-mbox (mbox &optional args) (interactive (list (read-file-name "mbox: ") (transient-args 'piem-b4-am))) - (apply #'piem-b4--call-b4 "am" + (apply #'piem-b4--call-b4 nil "am" (cons (concat "--use-local-mbox=" mbox) args)) (display-buffer piem-b4-output-buffer)) @@ -118,7 +123,7 @@ (defun piem-b4-am-ready-from-mid (mid &optional args) (interactive (list (read-string "Message ID: " nil nil (piem-mid)) (transient-args 'piem-b4-am))) - (apply #'piem-b4--call-b4 "am" (append args (list mid))) + (apply #'piem-b4--call-b4 nil "am" (append args (list mid))) (display-buffer piem-b4-output-buffer)) ;;;###autoload @@ -154,8 +159,7 @@ ;; empty string. ;; TODO: Optionally do more through Magit. - (call-process piem-b4-git-executable - mbox-file nil nil "am" "--scissors") + (piem-b4--call-git mbox-file "am" "--scissors") (if (and piem-b4-use-magit (fboundp 'magit-status-setup-buffer)) (magit-status-setup-buffer) |