summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2018-07-20 18:41:39 +0300
committerAlex Kost <alezost@gmail.com>2018-07-27 12:14:24 +0300
commitacc48a3f58c641211dc8c436d3afc557d59d9b8f (patch)
treef41a2f66f8341e0ce8e1e06e5d3d8e6df7dbb7f2
parentCache projects (diff)
downloademacs-build-farm-acc48a3f58c641211dc8c436d3afc557d59d9b8f.tar.gz
Do not hardcode project names
Receive them from a build farm instead. * build-farm.el (build-farm-projects): Remove variable. (build-farm-get-project-entries-once) (build-farm-project-names): New procedures. (build-farm-read-project): Use it.
-rw-r--r--build-farm.el24
1 files changed, 20 insertions, 4 deletions
diff --git a/build-farm.el b/build-farm.el
index f14a047..94104db 100644
--- a/build-farm.el
+++ b/build-farm.el
@@ -151,6 +151,21 @@ SEARCH-TYPE and ARGS."
(build-farm-filters entry-type))))
entries))
+(defun build-farm-get-project-entries-once (&optional url)
+ "Return project entries for URL build farm.
+If projects have already been received, return them from
+`build-farm-cache'. If URL is nil, use variable
+`build-farm-url'."
+ (or url (setq url build-farm-url))
+ (if (build-farm-cache-get url 'projects-received)
+ (build-farm-cache-get url 'projects)
+ ;; Cuirass does not support API for projects, so we will
+ ;; have an error from `build-farm-receive-data'.
+ (with-demoted-errors "Error: %S"
+ (require 'build-farm-project)
+ (build-farm-cache-set url 'projects-received t)
+ (build-farm-get-entries url 'project 'all))))
+
(defun build-farm-get-display (root-url entry-type search-type
&rest args)
"Search for ENTRY-TYPE entries and show results.
@@ -183,13 +198,14 @@ SEARCH-TYPE and ARGS."
;;; Readers
-(defvar build-farm-projects
- '("gnu" "guix")
- "List of available projects.")
+(defun build-farm-project-names (&optional url)
+ "Return projects for URL build farm."
+ (mapcar #'bui-entry-id
+ (build-farm-get-project-entries-once url)))
(build-farm-define-readers
:require-match nil
- :completions-var build-farm-projects
+ :completions-getter build-farm-project-names
:single-reader build-farm-read-project
:single-prompt "Project: ")