diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-01-13 18:14:19 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-01-13 18:24:19 +0100 |
commit | 4cd5ec801bb6c82cc1df2c4ac419d89614aa5d1b (patch) | |
tree | a12a55c9511f17018be652c1f980b380c322d836 /guix | |
parent | 6d30b1b2ca92705a6f3c06ddaf8ccf06466089d3 (diff) |
import: github: Fix regression on the /releases retrieval.
Fixes a regression introduced in
62bd24db39a86f80242f923eb4cc2f18f3b02c67, which introduced a call to
'hash-table->alist'.
* guix/import/github.scm (json-fetch*): New procedure.
(latest-released-version): Use it.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/import/github.scm | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/guix/import/github.scm b/guix/import/github.scm index 01452b12e3..a41511aff6 100644 --- a/guix/import/github.scm +++ b/guix/import/github.scm @@ -19,16 +19,28 @@ (define-module (guix import github) #:use-module (ice-9 match) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-34) #:use-module (json) #:use-module (guix utils) #:use-module ((guix download) #:prefix download:) #:use-module (guix import utils) - #:use-module (guix import json) #:use-module (guix packages) #:use-module (guix upstream) + #:use-module (guix http-client) #:use-module (web uri) #:export (%github-updater)) +(define (json-fetch* url) + "Return a representation of the JSON resource URL (a list or hash table), or +#f if URL returns 404." + (guard (c ((and (http-get-error? c) + (= 404 (http-get-error-code c))) + #f)) ;"expected" if package is unknown + (let* ((port (http-fetch url)) + (result (json->scm port))) + (close-port port) + result))) + (define (find-extension url) "Return the extension of the archive e.g. '.tar.gz' given a URL, or false if none is recognized" @@ -125,7 +137,7 @@ the package e.g. 'bedtools2'. Return #f if there is no releases" "https://api.github.com/repos/" (github-user-slash-repository url) "/releases")) - (json (json-fetch + (json (json-fetch* (if token (string-append api-url "?access_token=" token) api-url)))) |