Function: eca-process--fetch-releases
eca-process--fetch-releases is a natively compiled function defined in
eca-process.el.
Signature
(eca-process--fetch-releases)
Documentation
Return cached releases list, fetching from GitHub if needed.
Refetches when the cache is empty or has expired per
eca-server-releases-cache-ttl. On fetch failure, any previously
cached value is preserved and returned, and further fetch attempts
are skipped for eca-process--releases-failure-cooldown seconds.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-process.el
(defun eca-process--fetch-releases ()
"Return cached releases list, fetching from GitHub if needed.
Refetches when the cache is empty or has expired per
`eca-server-releases-cache-ttl'. On fetch failure, any previously
cached value is preserved and returned, and further fetch attempts
are skipped for `eca-process--releases-failure-cooldown' seconds."
(cond
((eca-process--releases-cache-valid-p)
(cdr eca-process--releases-cache))
((and eca-process--releases-fetch-failed-at
(< (- (float-time) eca-process--releases-fetch-failed-at)
eca-process--releases-failure-cooldown))
(cdr-safe eca-process--releases-cache))
(t
(condition-case err
(let* ((coding-system-for-read 'utf-8)
(json-string
(eca--curl-download-string
eca-process--releases-url))
(releases (with-temp-buffer
(insert json-string)
(goto-char (point-min))
(eca-api--json-read-buffer))))
;; Guard against non-release payloads (e.g. a rate-limit
;; JSON object) poisoning the cache.
(unless (and (or (vectorp releases) (proper-list-p releases))
(> (length releases) 0)
(plist-get (elt releases 0) :tag_name))
(error "Unexpected releases payload"))
(setq eca-process--releases-fetch-failed-at nil)
(setq eca-process--releases-cache
(cons (float-time) releases))
releases)
(error
(setq eca-process--releases-fetch-failed-at (float-time))
(eca-warn "Failed to fetch releases: %s" err)
(cdr-safe eca-process--releases-cache))))))