summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2018-08-17 23:13:07 +0300
committerAlex Kost <alezost@gmail.com>2018-08-17 23:13:07 +0300
commitf47c0cc56619ca8728c9c600b419c9d238cba5b3 (patch)
tree404a78a2efa54c2e707d2ad6595d09fa7ec94647
parentbuild: Show more parameters in Build Info (diff)
downloademacs-build-farm-f47c0cc56619ca8728c9c600b419c9d238cba5b3.tar.gz
build: Add "More info" button when needed
* build-farm.el (build-farm-current-url-type): New procedure. * build-farm-build.el (build-farm-build-info-insert-more-button) (build-farm-build-info-update-build): New procedures. (build-farm-build-info-format): Add 'build-farm-build-info-insert-more-button'.
-rw-r--r--build-farm-build.el25
-rw-r--r--build-farm.el4
2 files changed, 29 insertions, 0 deletions
diff --git a/build-farm-build.el b/build-farm-build.el
index 8d6a404..81bf4d4 100644
--- a/build-farm-build.el
+++ b/build-farm-build.el
@@ -260,6 +260,7 @@ See `build-farm-build-status-alist'."
:buffer-name "*Farm Build Info*"
:format '((name nil (simple bui-info-heading))
nil
+ build-farm-build-info-insert-more-button
build-farm-build-info-insert-url
(queued-time format (time))
(start-time format (time))
@@ -279,6 +280,30 @@ See `build-farm-build-status-alist'."
"String for formatting output names of builds.
It should be a '%s'-sequence.")
+(defun build-farm-build-info-insert-more-button (entry)
+ "Insert 'More info' button for build ENTRY at point."
+ (when (and (eq 'hydra (build-farm-current-url-type))
+ (bui-void-value? (bui-entry-value entry 'start-time)))
+ (bui-insert-action-button
+ "More info"
+ (lambda (btn)
+ (build-farm-build-info-update-build (button-get btn 'id)))
+ "Receive more info on the current build"
+ 'id (bui-entry-id entry))
+ (bui-newline 2)))
+
+(defun build-farm-build-info-update-build (id)
+ "Update build with ID in the current build info buffer."
+ (let ((new-entry (car (bui-get-entries
+ 'build-farm-build 'info
+ (list (build-farm-current-url) 'id id)))))
+ (or new-entry
+ ;; Actually, this shouldn't happen.
+ (error "Couldn't receive more info for build %d" id))
+ (setf (bui-item-entries bui-item)
+ (bui-replace-entry (bui-current-entries) id new-entry))
+ (bui-redisplay)))
+
(cl-defun build-farm-build-info-insert-builds-button
(&key project jobset job system)
"Insert 'Builds' button for PROJECT, JOBSET, JOB, SYSTEM."
diff --git a/build-farm.el b/build-farm.el
index 9e307ba..8618622 100644
--- a/build-farm.el
+++ b/build-farm.el
@@ -183,6 +183,10 @@ If URL is nil, use variable `build-farm-url'."
(bui-define-current-args-accessors build-farm-current
url search-type search-args)
+(defun build-farm-current-url-type ()
+ "Return build farm type of the current buffer."
+ (build-farm-url-type (build-farm-current-url)))
+
(defun build-farm-get-entries (root-url entry-type search-type
&rest args)
"Receive ENTRY-TYPE entries from cache or build farm.