summaryrefslogtreecommitdiff
path: root/guix/import/json.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/json.scm
parentc6cb82f5d5739fcc84281e5dc91076c37f1db89c (diff)
downloadgnu-guix-1ff2619bc114aface6b7b9d818f7208f9af677df.tar
gnu-guix-1ff2619bc114aface6b7b9d818f7208f9af677df.tar.gz
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/json.scm')
-rw-r--r--guix/import/json.scm32
1 files changed, 32 insertions, 0 deletions
diff --git a/guix/import/json.scm b/guix/import/json.scm
new file mode 100644
index 0000000000..c3092a5a9d
--- /dev/null
+++ b/guix/import/json.scm
@@ -0,0 +1,32 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix import json)
+ #:use-module (json)
+ #:use-module (guix utils)
+ #:use-module (guix import utils)
+ #:export (json-fetch))
+
+(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))))))