summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build-farm-build.el16
-rw-r--r--build-farm-popup.el22
-rw-r--r--build-farm-project.el2
-rw-r--r--build-farm.el40
4 files changed, 53 insertions, 27 deletions
diff --git a/build-farm-build.el b/build-farm-build.el
index 1c449c1..95f462f 100644
--- a/build-farm-build.el
+++ b/build-farm-build.el
@@ -78,11 +78,19 @@ If `current-prefix-arg' is specified, just return
job system)
"Prompt for and return a list of 'latest builds' arguments."
(let* ((number (build-farm-build-read-number-maybe))
- (project (if current-prefix-arg
- (build-farm-read-project nil project)
- project))
+ (url (build-farm-current-url))
+ (url-type (build-farm-url-type url))
+ (project (unless (eq 'cuirass url-type)
+ (if current-prefix-arg
+ (build-farm-read-project
+ :url url
+ :initial-input project)
+ project)))
(jobset (if current-prefix-arg
- (build-farm-read-jobset project nil jobset)
+ (build-farm-read-jobset
+ :url url
+ :project project
+ :initial-input jobset)
jobset))
(job-or-name (if current-prefix-arg
(build-farm-read-job nil job)
diff --git a/build-farm-popup.el b/build-farm-popup.el
index 5cd8309..61dd933 100644
--- a/build-farm-popup.el
+++ b/build-farm-popup.el
@@ -53,11 +53,8 @@
(?n "number"
build-farm-set-number-of-builds
build-farm-popup-format-number-of-builds))
- :options '(;; "Options for latest and queued builds"
- ;; (?n "Number of builds" "number="
- ;; magit-popup-read-number)
- "Options for latest builds"
- (?p "project" "project=" build-farm-read-project)
+ :options '("Options for latest builds"
+ (?p "project" "project=" build-farm-popup-read-project)
(?j "jobset" "jobset=" build-farm-popup-read-jobset)
(?J "job" "job=")
(?s "system" "system=" build-farm-read-system))
@@ -65,14 +62,21 @@
(?q "queued" build-farm-popup-queued-builds)
(?i "build by ID" build-farm-build)))
+(defun build-farm-popup-read-project (&optional prompt initial-input)
+ "Read project from minibuffer.
+See `completing-read' for PROMPT and INITIAL-INPUT."
+ (build-farm-read-project :prompt prompt
+ :initial-input initial-input))
+
(defun build-farm-popup-read-jobset (&optional prompt initial-input)
"Read jobset for the current project from minibuffer.
See `completing-read' for PROMPT and INITIAL-INPUT."
(build-farm-read-jobset
- (plist-get (build-farm-popup-parse-build-args
- (magit-popup-get-args))
- :project)
- prompt initial-input))
+ :prompt prompt
+ :initial-input initial-input
+ :project (plist-get (build-farm-popup-parse-build-args
+ (magit-popup-get-args))
+ :project)))
(defun build-farm-popup-variable-value (var-name)
"Return string formatted for popup buffer.
diff --git a/build-farm-project.el b/build-farm-project.el
index 840b864..e1ca32e 100644
--- a/build-farm-project.el
+++ b/build-farm-project.el
@@ -180,12 +180,14 @@ ARGS."
(defun build-farm-projects ()
"Display build farm projects."
(interactive)
+ (build-farm-check-project-support)
(build-farm-get-display build-farm-url 'project 'all))
;;;###autoload
(defun build-farm-project (project)
"Display build farm PROJECT."
(interactive (list (build-farm-read-project)))
+ (build-farm-check-project-support)
(bui-get-display-entries 'build-farm-project 'info
(list build-farm-url 'id project)))
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))