summaryrefslogtreecommitdiff
path: root/guix/import/pypi.scm
diff options
context:
space:
mode:
authorEric Bavier <bavier@member.fsf.org>2015-01-08 14:38:54 -0600
committerEric Bavier <bavier@member.fsf.org>2015-01-09 10:33:24 -0600
commit1ff2619bc114aface6b7b9d818f7208f9af677df (patch)
tree499f0d9f102b05bbb26e14a7a8e7b431231be509 /guix/import/pypi.scm
parentc6cb82f5d5739fcc84281e5dc91076c37f1db89c (diff)
import: Factorize utility functions.
* guix/import/pypi.scm (hash-table->alist, flatten, assoc-ref*, url-fetch, json-fetch): Pull procedures from here into... * guix/import/utils.scm: Here and... * guix/import/json.scm: Here. New file. * Makefile.am (MODULE)[HAVE_GUILE_JSON]: Add it. * guix/import/gnu.scm (file-sha256): Move from here to... * guix/hash.scm: Here. * tests/pypi.scm (pypi->guix-package): Update mock module reference.
Diffstat (limited to 'guix/import/pypi.scm')
-rw-r--r--guix/import/pypi.scm47
1 files changed, 1 insertions, 46 deletions
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 88f4a8e896..8567cad79c 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -27,40 +27,15 @@
#:use-module (web uri)
#:use-module (guix utils)
#:use-module (guix import utils)
+ #:use-module (guix import json)
#:use-module (guix base32)
#:use-module (guix hash)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix build-system python)
- #:use-module ((guix build download) #:prefix build:)
#:use-module (gnu packages python)
#:export (pypi->guix-package))
-(define (hash-table->alist table)
- "Return an alist represenation of TABLE."
- (map (match-lambda
- ((key . (lst ...))
- (cons key
- (map (lambda (x)
- (if (hash-table? x)
- (hash-table->alist x)
- x))
- lst)))
- ((key . (? hash-table? table))
- (cons key (hash-table->alist table)))
- (pair pair))
- (hash-map->list cons table)))
-
-(define (flatten lst)
- "Return a list that recursively concatenates all sub-lists of LIST."
- (fold-right
- (match-lambda*
- (((sub-list ...) memo)
- (append (flatten sub-list) memo))
- ((elem memo)
- (cons elem memo)))
- '() lst))
-
(define (join lst delimiter)
"Return a list that contains the elements of LST, each separated by
DELIMETER."
@@ -71,13 +46,6 @@ DELIMETER."
((elem . rest)
(cons* elem delimiter (join rest delimiter)))))
-(define (assoc-ref* alist key . rest)
- "Return the value for KEY from ALIST. For each additional key specified,
-recursively apply the procedure to the sub-list."
- (if (null? rest)
- (assoc-ref alist key)
- (apply assoc-ref* (assoc-ref alist key) rest)))
-
(define string->license
(match-lambda
("GNU LGPL" lgpl2.0)
@@ -88,19 +56,6 @@ recursively apply the procedure to the sub-list."
("Apache License, Version 2.0" asl2.0)
(_ #f)))
-(define (url-fetch url file-name)
- "Save the contents of URL to FILE-NAME. Return #f on failure."
- (parameterize ((current-output-port (current-error-port)))
- (build:url-fetch url file-name)))
-
-(define (json-fetch url)
- "Return an alist representation of the JSON resource URL, or #f on failure."
- (call-with-temporary-output-file
- (lambda (temp port)
- (and (url-fetch url temp)
- (hash-table->alist
- (call-with-input-file temp json->scm))))))
-
(define (pypi-fetch name)
"Return an alist representation of the PyPI metadata for the package NAME,
or #f on failure."