diff options
| author | Alex Kost <alezost@gmail.com> | 2018-07-20 18:41:39 +0300 |
|---|---|---|
| committer | Alex Kost <alezost@gmail.com> | 2018-07-27 12:14:24 +0300 |
| commit | acc48a3f58c641211dc8c436d3afc557d59d9b8f (patch) | |
| tree | f41a2f66f8341e0ce8e1e06e5d3d8e6df7dbb7f2 | |
| parent | Cache projects (diff) | |
| download | emacs-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.el | 24 |
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: ") |
