|
|
@ -183,35 +183,32 @@ API when using a GitHub token") |
|
|
|
API. This may be fixed by using an access token and setting the environment |
|
|
|
variable GUIX_GITHUB_TOKEN, for instance one procured from |
|
|
|
https://github.com/settings/tokens")) |
|
|
|
(let loop ((releases |
|
|
|
(match (remove pre-release? json) |
|
|
|
(() json) ; keep everything |
|
|
|
(releases releases)))) |
|
|
|
(match releases |
|
|
|
(() ;empty release list |
|
|
|
#f) |
|
|
|
((release . rest) ;one or more releases |
|
|
|
(let ((tag (or (hash-ref release "tag_name") ;a "release" |
|
|
|
(hash-ref release "name"))) ;a tag |
|
|
|
(name-length (string-length package-name))) |
|
|
|
;; some tags include the name of the package e.g. "fdupes-1.51" |
|
|
|
;; so remove these |
|
|
|
(if (and (< name-length (string-length tag)) |
|
|
|
(string=? (string-append package-name "-") |
|
|
|
(substring tag 0 (+ name-length 1)))) |
|
|
|
(substring tag (+ name-length 1)) |
|
|
|
;; some tags start with a "v" e.g. "v0.25.0" |
|
|
|
;; where some are just the version number |
|
|
|
(if (string-prefix? "v" tag) |
|
|
|
(substring tag 1) |
|
|
|
|
|
|
|
;; Finally, reject tags that don't start with a digit: |
|
|
|
;; they may not represent a release. |
|
|
|
(if (and (not (string-null? tag)) |
|
|
|
(char-set-contains? char-set:digit |
|
|
|
(string-ref tag 0))) |
|
|
|
tag |
|
|
|
(loop rest))))))))))) |
|
|
|
(any |
|
|
|
(lambda (release) |
|
|
|
(let ((tag (or (hash-ref release "tag_name") ;a "release" |
|
|
|
(hash-ref release "name"))) ;a tag |
|
|
|
(name-length (string-length package-name))) |
|
|
|
(cond |
|
|
|
;; some tags include the name of the package e.g. "fdupes-1.51" |
|
|
|
;; so remove these |
|
|
|
((and (< name-length (string-length tag)) |
|
|
|
(string=? (string-append package-name "-") |
|
|
|
(substring tag 0 (+ name-length 1)))) |
|
|
|
(substring tag (+ name-length 1))) |
|
|
|
;; some tags start with a "v" e.g. "v0.25.0" |
|
|
|
;; where some are just the version number |
|
|
|
((string-prefix? "v" tag) |
|
|
|
(substring tag 1)) |
|
|
|
;; Finally, reject tags that don't start with a digit: |
|
|
|
;; they may not represent a release. |
|
|
|
((and (not (string-null? tag)) |
|
|
|
(char-set-contains? char-set:digit |
|
|
|
(string-ref tag 0))) |
|
|
|
tag) |
|
|
|
(else #f)))) |
|
|
|
(match (remove pre-release? json) |
|
|
|
(() json) ; keep everything |
|
|
|
(releases releases)))))) |
|
|
|
|
|
|
|
(define (latest-release pkg) |
|
|
|
"Return an <upstream-source> for the latest release of PKG." |
|
|
|