~ruther/guix-local

90297811a9d6412fcf57bd6bef08ded39ac895cc — Ludovic Courtès 8 years ago 6d6d193
import: github: Gracefully handle multiple-URL origins.

* guix/import/github.scm (latest-release)[origin-github-uri]: New
procedure.  Use it.
1 files changed, 10 insertions(+), 1 deletions(-)

M guix/import/github.scm
M guix/import/github.scm => guix/import/github.scm +10 -1
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 19,6 20,7 @@
(define-module (guix import github)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (srfi srfi-34)
  #:use-module (json)
  #:use-module (guix utils)


@@ 182,7 184,14 @@ https://github.com/settings/tokens"))

(define (latest-release pkg)
  "Return an <upstream-source> for the latest release of PKG."
  (let* ((source-uri (origin-uri (package-source pkg)))
  (define (origin-github-uri origin)
    (match (origin-uri origin)
      ((? string? url)
       url)                                       ;surely a github.com URL
      ((urls ...)
       (find (cut string-contains <> "github.com") urls))))

  (let* ((source-uri (origin-github-uri (package-source pkg)))
         (name (package-name pkg))
         (newest-version (latest-released-version source-uri name)))
    (if newest-version