summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2018-08-26 13:43:39 +0300
committerAlex Kost <alezost@gmail.com>2018-08-26 13:43:39 +0300
commitbe01b4767f81e7a6ab1111c24831530bee3a77e2 (patch)
tree75ca429d1ce9c7494193d1c772b7e9802d32a878
parentRename 'build-farm-build-info-insert-builds-button' (diff)
downloademacs-build-farm-be01b4767f81e7a6ab1111c24831530bee3a77e2.tar.gz
Add system buttons to Jobset Info
* build-farm.el (build-farm-info-system): Inherit from 'button' face. * build-farm-build.el (build-farm-system): New button type. (build-farm-build-button-system-action) (build-farm-info-insert-system-button) (build-farm-info-insert-systems): New procedures. * build-farm-jobset.el (build-farm-cuirass-jobset-args-info-format): Use 'build-farm-info-insert-systems'.
-rw-r--r--build-farm-build.el32
-rw-r--r--build-farm-jobset.el2
-rw-r--r--build-farm.el2
3 files changed, 33 insertions, 3 deletions
diff --git a/build-farm-build.el b/build-farm-build.el
index dd703a1..5ecf80e 100644
--- a/build-farm-build.el
+++ b/build-farm-build.el
@@ -55,6 +55,13 @@ for the number of builds."
:type 'integer
:group 'build-farm-build)
+(define-button-type 'build-farm-system
+ :supertype 'bui
+ 'action #'build-farm-build-button-action
+ 'help-echo (concat "Show latest builds for this system "
+ "(with prefix, prompt for all parameters)")
+ 'face 'build-farm-info-system)
+
(defun build-farm-set-number-of-builds (number)
"Set `build-farm-number-of-builds' to NUMBER."
(interactive (list (build-farm-build-read-number)))
@@ -128,6 +135,14 @@ If `current-prefix-arg' is specified, just return
(build-farm-current-url)
'build 'latest args)))
+(defun build-farm-build-button-system-action (button)
+ "Display latest builds according to system BUTTON."
+ (let ((args (build-farm-build-latest-prompt-args
+ :system (button-label button))))
+ (apply #'build-farm-get-display
+ (build-farm-current-url)
+ 'build 'latest args)))
+
(cl-defun build-farm-info-insert-builds-button
(&key project jobset job system)
"Insert 'Builds' button for PROJECT, JOBSET, JOB, SYSTEM."
@@ -148,6 +163,21 @@ If `current-prefix-arg' is specified, just return
'job job
'system system))
+(cl-defun build-farm-info-insert-system-button
+ (system &key project jobset job)
+ "Insert button to display builds for SYSTEM, PROJECT, JOBSET, JOB."
+ (bui-insert-button system 'build-farm-system
+ 'project project
+ 'jobset jobset
+ 'job job
+ 'system system))
+
+(defun build-farm-info-insert-systems (systems)
+ "Insert SYSTEMS at point."
+ (bui-info-insert-value-format
+ systems 'build-farm-system
+ 'action #'build-farm-build-button-system-action))
+
(declare-function guix-build-log-mode "guix-build-log" t)
(defun build-farm-build-view-log (id &optional root-url)
@@ -374,7 +404,7 @@ It should be a '%s'-sequence.")
(defun build-farm-build-info-insert-system (system entry)
"Insert SYSTEM for build ENTRY at point."
- (bui-format-insert system 'build-farm-info-system)
+ (insert system)
(bui-insert-indent)
(build-farm-info-insert-builds-button
:system (bui-entry-non-void-value entry 'system)))
diff --git a/build-farm-jobset.el b/build-farm-jobset.el
index bdd37f3..8419d36 100644
--- a/build-farm-jobset.el
+++ b/build-farm-jobset.el
@@ -243,7 +243,7 @@ The BUTTON file name is relative to guix source tree."
(bui-define-interface build-farm-cuirass-jobset-args info
:format '((subset format (format))
- (systems format (format))) ; TODO make system buttons
+ (systems format (build-farm-info-insert-systems)))
:reduced? t)
(bui-define-interface build-farm-cuirass-jobset-inputs info
diff --git a/build-farm.el b/build-farm.el
index 089b29c..a1ab1a3 100644
--- a/build-farm.el
+++ b/build-farm.el
@@ -86,7 +86,7 @@
:group 'build-farm-faces)
(defface build-farm-info-system
- '((t))
+ '((t :inherit button))
"Face for system names in 'info' buffers."
:group 'build-farm-faces)