~ruther/guix-local

4679dd6967c21e21c740cd88e17191b8e2aac5ee — James Richardson 8 years ago fe4e0b0
import: cpan: Update CPAN importer to use MetaCPAN v1 API.

* guix/import/cpan.scm (module->dist-name, cpan-fetch): Use metacpan.org
URLs.
* tests/cpan.scm ("cpan->guix-package"): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2 files changed, 4 insertions(+), 4 deletions(-)

M guix/import/cpan.scm
M tests/cpan.scm
M guix/import/cpan.scm => guix/import/cpan.scm +2 -2
@@ 88,7 88,7 @@
  "Return the base distribution module for a given module.  E.g. the 'ok'
module is distributed with 'Test::Simple', so (module->dist-name \"ok\") would
return \"Test-Simple\""
  (assoc-ref (json-fetch (string-append "https://api.metacpan.org/module/"
  (assoc-ref (json-fetch (string-append "https://fastapi.metacpan.org/v1/module/"
                                        module
                                        "?fields=distribution"))
             "distribution"))


@@ 113,7 113,7 @@ return \"Test-Simple\""
  "Return an alist representation of the CPAN metadata for the perl module MODULE,
or #f on failure.  MODULE should be e.g. \"Test::Script\""
  ;; This API always returns the latest release of the module.
  (json-fetch (string-append "https://api.metacpan.org/release/" name)))
  (json-fetch (string-append "https://fastapi.metacpan.org/v1/release/" name)))

(define (cpan-home name)
  (string-append "http://search.cpan.org/dist/" name))

M tests/cpan.scm => tests/cpan.scm +2 -2
@@ 74,10 74,10 @@
        (mock ((guix http-client) http-fetch
               (lambda (url . rest)
                 (match url
                   ("https://api.metacpan.org/release/Foo-Bar"
                   ("https://fastapi.metacpan.org/v1/release/Foo-Bar"
                    (values (open-input-string test-json)
                            (string-length test-json)))
                   ("https://api.metacpan.org/module/Test::Script?fields=distribution"
                   ("https://fastapi.metacpan.org/v1/module/Test::Script?fields=distribution"
                    (let ((result "{ \"distribution\" : \"Test-Script\" }"))
                      (values (open-input-string result)
                              (string-length result))))