~ruther/guix-local

e6f82fcd5f8d8340f7f4f5ac5e476db8caaaeef1 — Ludovic Courtès 3 years ago d46d1be
import: gem: Factorize "bundler" special case for name mapping.

* guix/import/gem.scm (ruby-package-name): Add "bundler" special case.
(gem->guix-package): Adjust accordingly.
* tests/gem.scm ("gem-recursive-import")
("gem-recursive-import with a specific version"): Remove "ruby-bundler"
from the expected packages.
2 files changed, 6 insertions(+), 38 deletions(-)

M guix/import/gem.scm
M tests/gem.scm
M guix/import/gem.scm => guix/import/gem.scm +6 -8
@@ 93,9 93,11 @@
(define (ruby-package-name name)
  "Given the NAME of a package on RubyGems, return a Guix-compliant name for
the package."
  (if (string-prefix? "ruby-" name)
      (snake-case name)
      (string-append "ruby-" (snake-case name))))
  (if (string=? name "bundler")
      name                                        ;special case: no prefix
      (if (string-prefix? "ruby-" name)
          (snake-case name)
          (string-append "ruby-" (snake-case name)))))

(define (make-gem-sexp name version hash home-page synopsis description
                       dependencies licenses)


@@ 135,11 137,7 @@ Optionally include a VERSION string to fetch a specific version gem."
        (let* ((dependencies-names (map gem-dependency-name
                                        (gem-dependencies-runtime
                                         (gem-dependencies gem))))
               (dependencies (map (lambda (dep)
                                    (if (string=? dep "bundler")
                                        "bundler" ; special case, no prefix
                                        (ruby-package-name dep)))
                                  dependencies-names))
               (dependencies (map ruby-package-name dependencies-names))
               (licenses     (map string->license (gem-licenses gem))))
          (values (make-gem-sexp (gem-name gem) (gem-version gem)
                                 (gem-sha256 gem) (gem-home-page gem)

M tests/gem.scm => tests/gem.scm +0 -30
@@ 182,21 182,6 @@
              ('home-page "https://example.com")
              ('license #f))                      ;no licensing info
            ('package
              ('name "ruby-bundler")
              ('version "1.14.2")
              ('source
               ('origin
                 ('method 'url-fetch)
                 ('uri ('rubygems-uri "bundler" 'version))
                 ('sha256
                  ('base32
                   "1446xiz7zg0bz7kgx9jv84y0s4hpsg61dj5l3qb0i00avc1kxd9v"))))
              ('build-system 'ruby-build-system)
              ('synopsis "Ruby gem bundler")
              ('description "Ruby gem bundler")
              ('home-page "https://bundler.io/")
              ('license 'license:expat))
            ('package
              ('name "ruby-foo")
              ('version "1.0.0")
              ('source


@@ 249,21 234,6 @@
              ('home-page "https://example.com")
              ('license #f))                      ;no licensing info
            ('package
              ('name "ruby-bundler")
              ('version "1.14.2")
              ('source
               ('origin
                 ('method 'url-fetch)
                 ('uri ('rubygems-uri "bundler" 'version))
                 ('sha256
                  ('base32
                   "1446xiz7zg0bz7kgx9jv84y0s4hpsg61dj5l3qb0i00avc1kxd9v"))))
              ('build-system 'ruby-build-system)
              ('synopsis "Ruby gem bundler")
              ('description "Ruby gem bundler")
              ('home-page "https://bundler.io/")
              ('license 'license:expat))
            ('package
              ('name "ruby-foo")
              ('version "2.0.0")
              ('source