summaryrefslogtreecommitdiff
path: root/build-farm.el
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2018-08-22 10:32:39 +0300
committerAlex Kost <alezost@gmail.com>2018-08-26 00:06:26 +0300
commitf05dafb2b8da4c7361879df66972cd1504c38706 (patch)
tree6ad489770e3e140551e6567e37764a90a35a3f0b /build-farm.el
parentAdd interface for Cuirass jobsets (diff)
downloademacs-build-farm-f05dafb2b8da4c7361879df66972cd1504c38706.tar.gz
Read project/jobset according to farm type (Hydra or Cuirass)
* build-farm.el (build-farm-check-project-support): New procedure. (build-farm-read-project, build-farm-read-jobset): Use keyword arguments. * build-farm-build.el (build-farm-build-latest-prompt-args): Prompt for project only for Hydra farm. * build-farm-popup.el (build-farm-popup-read-jobset): Likewise. (build-farm-popup-read-project): New procedure. * build-farm-project.el (build-farm-projects, build-farm-project): Check if current farm type is Hydra.
Diffstat (limited to 'build-farm.el')
-rw-r--r--build-farm.el40
1 files changed, 26 insertions, 14 deletions
diff --git a/build-farm.el b/build-farm.el
index 8e74e8b..41a75cc 100644
--- a/build-farm.el
+++ b/build-farm.el
@@ -187,6 +187,12 @@ If URL is nil, use variable `build-farm-url'."
"Return build farm type of the current buffer."
(build-farm-url-type (build-farm-current-url)))
+(defun build-farm-check-project-support (&optional url)
+ "Raise an error if URL build farm does not support projects."
+ (when (eq 'cuirass (build-farm-url-type (or url build-farm-url)))
+ (error "Cuirass does not have a notion of 'project'.
+Please use 'jobsets' instead")))
+
(defun build-farm-get-entries (root-url entry-type search-type
&rest args)
"Receive ENTRY-TYPE entries from cache or build farm.
@@ -281,18 +287,14 @@ SEARCH-TYPE and ARGS."
(mapcar #'bui-entry-id
(build-farm-get-project-entries-once url)))
-(defun build-farm-jobset-names (project &optional url)
+(cl-defun build-farm-jobset-names (&key url project)
"Return jobsets for PROJECT from URL build farm."
- (bui-entry-non-void-value
- (bui-entry-by-id (build-farm-get-project-entries-once url)
- project)
- 'jobsets))
-
-(build-farm-define-readers
- :require-match nil
- :completions-getter build-farm-project-names
- :single-reader build-farm-read-project
- :single-prompt "Project: ")
+ (if (eq 'cuirass (build-farm-url-type url))
+ '() ; TODO get from cache
+ (bui-entry-non-void-value
+ (bui-entry-by-id (build-farm-get-project-entries-once url)
+ project)
+ 'jobsets)))
(build-farm-define-readers
:require-match nil
@@ -305,12 +307,22 @@ SEARCH-TYPE and ARGS."
:single-reader build-farm-read-system
:single-prompt "System: ")
-(defun build-farm-read-jobset (project &optional prompt initial-input)
- "Read jobset for PROJECT from minibuffer.
+(cl-defun build-farm-read-project (&key url prompt initial-input)
+ "Read project name for Hydra URL from minibuffer.
+See `completing-read' for PROMPT and INITIAL-INPUT."
+ (build-farm-check-project-support url)
+ (build-farm-completing-read
+ (or prompt "Project: ")
+ (build-farm-project-names url)
+ nil nil initial-input nil nil))
+
+(cl-defun build-farm-read-jobset (&key url project prompt initial-input)
+ "Read jobset for PROJECT from URL build farm from minibuffer.
See `completing-read' for PROMPT and INITIAL-INPUT."
(build-farm-completing-read
(or prompt "Jobset: ")
- (build-farm-jobset-names project)
+ (build-farm-jobset-names :url url
+ :project project)
nil nil initial-input))