guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/05: import: crate: Simplify find-crate-version.


From: guix-commits
Subject: 05/05: import: crate: Simplify find-crate-version.
Date: Tue, 16 Jan 2024 07:26:17 -0500 (EST)

efraim pushed a commit to branch master
in repository guix.

commit 8520f00d6989ff5ab22755a97dfcfd0375f6b5ca
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Tue Jan 9 15:07:37 2024 +0200

    import: crate: Simplify find-crate-version.
    
    * guix/import/crate.scm (find-crate-version): Reuse
    nonyanked-crate-versions, max-crate-version-of-semver.
    
    Change-Id: I976a3b5a397f0d6a7d723804a98356544bfc7da3
---
 guix/import/crate.scm | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index d522aecb4f..7a25b2243c 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -322,26 +322,14 @@ look up the development dependencs for the given crate."
   ;; If no matching non-yanked version has been found and allow-yanked? is #t,
   ;; also consider yanked packages.
   (define (find-crate-version crate range)
-    (let* ((semver-range (string->semver-range range))
-           (versions
-            (sort
-             (filter (lambda (entry)
-                       (and
-                         (or allow-yanked?
-                             (not (crate-version-yanked? (second entry))))
-                         (semver-range-contains? semver-range (first entry))))
-                     (map (lambda (ver)
-                            (list (string->semver (crate-version-number ver))
-                                  ver))
-                          (crate-versions crate)))
-             (match-lambda* (((semver ver) ...)
-                             (match-let (((yanked1 yanked2)
-                                          (map crate-version-yanked? ver)))
-                               (or (and yanked1 (not yanked2))
-                                   (and (eq? yanked1 yanked2)
-                                        (apply semver<? semver)))))))))
-      (and (not (null-list? versions))
-           (second (last versions)))))
+    (let ((semver-range (string->semver-range range))
+          (versions     (nonyanked-crate-versions crate)))
+      (or (and (not (null-list? versions))
+               (max-crate-version-of-semver semver-range versions))
+          (and allow-yanked?
+               (not (null-list? (crate-versions crate)))
+               (max-crate-version-of-semver semver-range
+                                            (crate-versions crate))))))
 
   ;; If no non-yanked existing package version was found, check the upstream
   ;; versions.  If a non-yanked upsteam version exists, use it instead,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]