~ruther/guix-local

4cd5ec801bb6c82cc1df2c4ac419d89614aa5d1b — Ludovic Courtès 9 years ago 6d30b1b
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.
1 files changed, 14 insertions(+), 2 deletions(-)

M guix/import/github.scm
M guix/import/github.scm => guix/import/github.scm +14 -2
@@ 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))))