diff options
author | Hartmut Goebel <h.goebel@crazy-compilers.com> | 2022-06-30 11:05:13 +0200 |
---|---|---|
committer | Hartmut Goebel <h.goebel@crazy-compilers.com> | 2022-06-30 11:31:36 +0200 |
commit | eb5de11e37d45fe21702e623dc26a7946fd0047d (patch) | |
tree | 4d59a153c601face0e8bcdc3c1a9467de7fc2d79 | |
parent | 2e43663c76e72844c84c1f89692af0839ecb87d3 (diff) | |
download | guix-eb5de11e37d45fe21702e623dc26a7946fd0047d.tar.gz |
generic-git
* guix/import/git.scm(latest-tag): Add kw-arg version and handle it. (latest-git-tag-version, latest-git-release): Add kw-arg version and pass it on to called functions.
-rw-r--r-- | guix/import/git.scm | 26 | ||||
-rw-r--r-- | guix/scripts/refresh.scm | 1 |
2 files changed, 19 insertions, 8 deletions
diff --git a/guix/import/git.scm b/guix/import/git.scm index e4d35ed87f..cea58ab02d 100644 --- a/guix/import/git.scm +++ b/guix/import/git.scm @@ -148,7 +148,8 @@ version corresponding to the tag, and the cdr is the name of the tag." tags) entry<?)) -(define* (latest-tag url #:key prefix suffix delim pre-releases?) +(define* (latest-tag url + #:key prefix suffix delim pre-releases? (version #f)) "Return the latest version and corresponding tag available from the Git repository at URL." (define (pre-release? tag) @@ -171,11 +172,18 @@ repository at URL." ((null? versions->tags) (git-no-valid-tags-error)) (else - (match (last versions->tags) - ((version . tag) - (values version tag))))))) - -(define (latest-git-tag-version package) + (let ((version-to-pick + (if version + (filter (lambda (vt) (string=? version (car vt))) + versions->tags) + versions->tags))) + (if (null? version-to-pick) + (values #f #f) + (match (last version-to-pick) + ((version . tag) + (values version tag))))))))) + +(define* (latest-git-tag-version package #:key (version #f)) "Given a PACKAGE, return the latest version of it and the corresponding git tag, or #false and #false if the latest version could not be determined." (guard (c ((or (git-no-tags-error? c) (git-no-valid-tags-error? c)) @@ -195,6 +203,7 @@ tag, or #false and #false if the latest version could not be determined." (url (git-reference-url (origin-uri source))) (property (cute assq-ref (package-properties package) <>))) (latest-tag url + #:version version #:prefix (property 'release-tag-prefix) #:suffix (property 'release-tag-suffix) #:delim (property 'release-tag-version-delimiter) @@ -209,12 +218,13 @@ tag, or #false and #false if the latest version could not be determined." (not (github-package? package)))) (_ #f))) -(define (latest-git-release package) +(define* (latest-git-release package #:key (version #f)) "Return an <upstream-source> for the latest release of PACKAGE." (let* ((name (package-name package)) (old-version (package-version package)) (old-reference (origin-uri (package-source package))) - (new-version new-version-tag (latest-git-tag-version package))) + (new-version new-version-tag + (latest-git-tag-version package #:version version))) (and new-version new-version-tag (upstream-source (package name) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 14329751f8..ae8fb97b36 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; |