~ruther/guix-local

8520f00d6989ff5ab22755a97dfcfd0375f6b5ca — Efraim Flashner 2 years ago 5ce1512
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
1 files changed, 8 insertions(+), 20 deletions(-)

M guix/import/crate.scm
M guix/import/crate.scm => guix/import/crate.scm +8 -20
@@ 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,