From 73557bc00760b4404bfe17ecb3aca983c6dcc11e Mon Sep 17 00:00:00 2001
From: zimoun
Date: Tue, 18 Feb 2020 13:25:14 +0100
Subject: [PATCH v3 2/2] website: Provide JSON sources list used by Software
Heritage.
Format discussed here .
* website/apps/packages/builder.scm (origin->json): Add list modifier.
* website/apps/packages/builder.scm (sources-json-builder): New procedure.
---
website/apps/packages/builder.scm | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/website/apps/packages/builder.scm b/website/apps/packages/builder.scm
index d3a777e..3fc1285 100644
--- a/website/apps/packages/builder.scm
+++ b/website/apps/packages/builder.scm
@@ -74,6 +74,7 @@
(flatten
(list
(index-builder)
+ (sources-json-builder)
(packages-json-builder)
(packages-builder)
(package-list-builder))))
@@ -88,7 +89,7 @@
;; Maximum number of packages shown on /packages.
30)
-(define (origin->json origin)
+(define* (origin->json origin #:optional (transformer list->vector))
(define method
(origin-method origin))
@@ -105,7 +106,7 @@
((eq? svn-fetch method) 'svn)
(else #nil)))
,@(cond ((eq? url-fetch method)
- `(("url" . ,(list->vector
+ `(("url" . ,(transformer
(resolve
(match uri
((? string? url) (list url))
@@ -155,6 +156,21 @@
(list->vector (map package->json (all-packages)))
scm->json))
+(define (sources-json-builder)
+ "Return a JSON page listing all the sources.
+
+See ."
+ (define (package->json package)
+ `(,@(if (origin? (package-source package))
+ (origin->json (package-source package))
+ `(("type" . "no-origin")
+ ("name" . ,(package-name package))))))
+
+ (make-page "sources.json"
+ `(("sources" . ,(list->vector (map package->json (all-packages))))
+ ("version" . "1"))
+ scm->json))
+
(define (index-builder)
"Return a Haunt page listing some random packages."
(define (sample n from)
--
2.25.0