guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: website: Provide JSON package list.


From: Ricardo Wurmus
Subject: 01/01: website: Provide JSON package list.
Date: Wed, 21 Aug 2019 18:20:04 -0400 (EDT)

rekado pushed a commit to branch master
in repository guix-artwork.

commit 9c6f714305460e99c681d9b7f368e13bfe49fdd9
Author: nixo <address@hidden>
Date:   Mon Aug 12 16:42:08 2019 +0200

    website: Provide JSON package list.
    
    * website/apps/packages/builder.scm (package-json-builder): New
    procedure.
    (builder): Use it.
    
    Co-authored-by: Ricardo Wurmus <address@hidden>
    Signed-off-by: Ricardo Wurmus <address@hidden>
---
 website/apps/packages/builder.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/website/apps/packages/builder.scm 
b/website/apps/packages/builder.scm
index 40a54f9..00e177c 100644
--- a/website/apps/packages/builder.scm
+++ b/website/apps/packages/builder.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix web site
 ;;; Copyright © 2017 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2019 Ricardo Wurmus <address@hidden>
+;;; Copyright © 2019 Nicolò Balzarotti <address@hidden>
 ;;;
 ;;; Initially written by sirgazil
 ;;; who waives all copyright interest on this file.
@@ -36,6 +37,8 @@
   #:use-module (haunt page)
   #:use-module (haunt utils)
   #:use-module (srfi srfi-1)
+  #:use-module (guix packages)
+  #:use-module (json)
   #:export (builder))
 
 
@@ -62,6 +65,7 @@
   (flatten
    (list
     (index-builder)
+    (packages-json-builder)
     (packages-builder)
     (package-list-builder))))
 
@@ -75,6 +79,18 @@
   ;; Maximum number of packages shown on /packages.
   30)
 
+(define (packages-json-builder)
+  "Return a JSON page listing all packages."
+  (define (package->json package)
+    `(("name"     . ,(package-name package))
+      ("version"  . ,(package-version package))
+      ("synopsis" . ,(package-synopsis package))
+      ("homepage" . ,(package-home-page package))))
+  (make-page "packages.json"
+                (list->vector (map package->json (all-packages)))
+             (lambda args
+               (apply scm->json (append args '(#:pretty #t))))))
+
 (define (index-builder)
   "Return a Haunt page listing some random packages."
   (define (sample n from)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]