import: github: Gracefully handle multiple-URL origins.

* guix/import/github.scm (latest-release)[origin-github-uri]: New
procedure.  Use it.
master
Ludovic Courtès 2017-10-27 14:38:45 -07:00
parent 6d6d193221
commit 90297811a9
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 10 additions and 1 deletions

View File

@ -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