diff options
author | Yuchen Pei <id@ypei.org> | 2023-07-23 15:39:30 +1000 |
---|---|---|
committer | Yuchen Pei <id@ypei.org> | 2023-07-23 15:39:30 +1000 |
commit | 54176e05e9391ec3c7e7d5ec50e0a2c2a6d4ef7b (patch) | |
tree | 46f9143850d256e83fcdbf4c8810f326b48e62e4 /buildbot-view.el | |
parent | f83633a34c54967c35bdc3a1bb157e13c30db64f (diff) |
Adding indirect branch / revision filtering
Most instances seem to not support direct branch / revision filtering
in Changes API requests, that is, requests such as
<host>/api/v2/changes?revision=<revision-id>
timeout or return an error code.
In such cases, we issue a more general API request, and filter the
response by revision:
<host>/api/v2/changes?limit=<limit>&order=-changeid
We add a new custom var `buildbot-api-changes-direct-filter' to
control the relevant behaviour.
The mariadb instance seems to be the only instance that work better
with direct filtering, whereas python and buildbot seems to work with
both, and the remaining instances only supporting indirect filtering.
We also add a few more custom vars for limiting in API requests, and
fix some regressions introduced in the previous commit, about setting
the host.
Diffstat (limited to 'buildbot-view.el')
-rw-r--r-- | buildbot-view.el | 97 |
1 files changed, 40 insertions, 57 deletions
diff --git a/buildbot-view.el b/buildbot-view.el index 4898353..0cc9b26 100644 --- a/buildbot-view.el +++ b/buildbot-view.el @@ -32,10 +32,10 @@ (defvar buildbot-view-header-regex "^\\[.*\\]$" "The header regex in a Buildbot buffer.") -(defvar buildbot-view-branch-change-limit 10) -(defvar buildbot-view-builder-build-limit 50) -;; 'revision, 'build, 'step, or 'log -(defvar-local buildbot-view-type nil) +(defvar-local buildbot-view-type nil + "The type of the Buildbot view. + +One of `revision', `build', `step', or `log'.") (defvar-local buildbot-view-data nil) (defvar buildbot-view-mode-map @@ -45,7 +45,7 @@ (define-key kmap "f" #'buildbot-view-next-header-same-thing) (define-key kmap (kbd "M-p") #'buildbot-view-previous-header) (define-key kmap "p" #'buildbot-view-previous-failed-header) - (define-key kmap (kbd "b") #'buildbot-view-previous-header-same-thing) + (define-key kmap "b" #'buildbot-view-previous-header-same-thing) (define-key kmap "g" #'buildbot-view-reload) (define-key kmap (kbd "<return>") #'buildbot-view-open-thing-at-point) kmap) @@ -339,12 +339,15 @@ Finally, call `buildbot-get-all-builders' to get the builders." (buildbot-builders-same-host host) (let ((buildbot-host host)) (buildbot-get-all-builders)))) -(defun buildbot-view-open (type data &optional force) +(defun buildbot-view-open (type data &optional force host) "Open a view of TYPE using DATA. -With a non-nil FORCE, reload the view buffer if exists." - (let ((buffer-name (buildbot-view-buffer-name type data)) - (host buildbot-host)) +With a non-nil FORCE, reload the view buffer if exists. + +With a non-nil HOST, set the `buildbot-host' of the view buffer, +otherwise pass the value from the current buffer." + (unless host (setq host (or buildbot-host buildbot-default-host))) + (let ((buffer-name (buildbot-view-buffer-name type data))) (when (or force (not (get-buffer buffer-name))) (with-current-buffer (get-buffer-create buffer-name) (buildbot-view-mode) @@ -362,26 +365,6 @@ With a non-nil FORCE, reload the view buffer if exists." (interactive) (buildbot-view-update)) -(defun buildbot-open-with-host (open-fun) - "Cal OPEN-FUN after reading a specified host." - (let ((buildbot-host (read-string "Buildbot host: "))) - (funcall open-fun))) - -(defun buildbot-revision-open-internal (revision) - "Open a revision view of REVISION id." - (buildbot-view-open 'revision `((revision . ,revision)))) - -(defun buildbot-branch-open-internal (branch) - "Open a branch view of BRANCH name." - (buildbot-view-open 'branch `((branch . ,branch)))) - -(defun buildbot-builder-open-internal (builder-name) - "Open a builder view of BUILDER-NAME." - (buildbot-view-open - 'builder - (list (cons 'builder - (buildbot-builder-by-name builder-name))))) - ;;;###autoload (defun buildbot-revision-open (&optional read-host) "Open a revision view. @@ -389,12 +372,12 @@ With a non-nil FORCE, reload the view buffer if exists." With a nonnil prefix arg READ-HOST, will prompt for the host first." (interactive "P") - (let ((thunk (lambda () - (buildbot-revision-open-internal - (read-string "Revision (e.g. commit hash): "))))) - (if read-host - (buildbot-open-with-host thunk) - (funcall thunk)))) + (let ((host (when read-host (read-string "Buildbot host: ")))) + (buildbot-view-open + 'revision + `((revision . ,(read-string "Revision (e.g. commit hash): "))) + nil + host))) ;;;###autoload (defun buildbot-branch-open (&optional read-host) @@ -403,12 +386,12 @@ first." With a nonnil prefix arg READ-HOST, will prompt for the host first." (interactive "P") - (let ((thunk (lambda () - (buildbot-branch-open-internal - (read-string "Branch: "))))) - (if read-host - (buildbot-open-with-host thunk) - (funcall thunk)))) + (let ((host (when read-host (read-string "Buildbot host: ")))) + (buildbot-view-open + 'branch + `((branch . ,(read-string "Branch: "))) + nil + host))) ;;;###autoload (defun buildbot-builder-open (read-host) @@ -417,18 +400,20 @@ first." With a nonnil prefix arg READ-HOST, will prompt for the host first." (interactive "P") - (let ((thunk (lambda () - (let ((buildbot-builders - (buildbot-get-builders-smart))) - (buildbot-builder-open-internal - (completing-read - "Builder name: " - (mapcar - (lambda (builder) (alist-get 'name builder)) - buildbot-builders))))))) - (if read-host - (buildbot-open-with-host thunk) - (funcall thunk)))) + (let* ((host (when read-host (read-string "Buildbot host: "))) + (buildbot-builders + (buildbot-get-builders-smart host))) + (buildbot-view-open + 'builder + `((builder . + ,(buildbot-builder-by-name + (completing-read + "Builder name: " + (mapcar + (lambda (builder) (alist-get 'name builder)) + buildbot-builders))))) + nil + host))) (defun buildbot-view-update () "Refresh a view." @@ -441,8 +426,7 @@ first." (insert (buildbot-branch-format (alist-get 'branch buildbot-view-data) (buildbot-get-changes-by-branch - (alist-get 'branch buildbot-view-data) - buildbot-view-branch-change-limit)))) + (alist-get 'branch buildbot-view-data))))) ('revision (let ((revision-and-changes-info (buildbot-get-revision-and-changes-info @@ -455,8 +439,7 @@ first." (let* ((builder (alist-get 'builder buildbot-view-data)) (builds (buildbot-get-recent-builds-by-builder - (alist-get 'builderid builder) - buildbot-view-builder-build-limit))) + (alist-get 'builderid builder)))) (insert (buildbot-builder-format builder builds)))) ('build (let ((revision (alist-get 'revision buildbot-view-data))) |