guix-commits
[Top][All Lists]
Advanced

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

01/02: website: Refactor and resolve mirror:// of JSON package list.


From: Ludovic Courtès
Subject: 01/02: website: Refactor and resolve mirror:// of JSON package list.
Date: Mon, 9 Mar 2020 05:50:39 -0400 (EDT)

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

commit 87884f2de25559fca11892187953261cee8224ef
Author: zimoun <address@hidden>
AuthorDate: Mon Feb 10 17:52:13 2020 +0100

    website: Refactor and resolve mirror:// of JSON package list.
    
    * website/apps/packages/builder.scm (origin->json): New procedure.
    (package-json-builder)[origin->json]: Remove.
    
    Signed-off-by: Ludovic Courtès <address@hidden>
---
 website/apps/packages/builder.scm | 65 ++++++++++++++++++++++++---------------
 1 file changed, 40 insertions(+), 25 deletions(-)

diff --git a/website/apps/packages/builder.scm 
b/website/apps/packages/builder.scm
index 9dc44c9..8ce9ac9 100644
--- a/website/apps/packages/builder.scm
+++ b/website/apps/packages/builder.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2019 Ricardo Wurmus <address@hidden>
 ;;; Copyright © 2019 Nicolò Balzarotti <address@hidden>
+;;; Copyright © 2020 Simon Tournier <address@hidden>
 ;;;
 ;;; Initially written by sirgazil
 ;;; who waives all copyright interest on this file.
@@ -37,13 +38,16 @@
   #:use-module (haunt page)
   #:use-module (haunt utils)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix svn-download)
   #:use-module (guix utils)                       ;location
+  #:use-module ((guix build download) #:select (maybe-expand-mirrors))
   #:use-module (json)
   #:use-module (ice-9 match)
+  #:use-module ((web uri) #:select (string->uri uri->string))
   #:export (builder))
 
 
@@ -84,33 +88,44 @@
   ;; Maximum number of packages shown on /packages.
   30)
 
+(define (origin->json origin)
+  "Return a JSON representation (an alist) of ORIGIN."
+  (define method
+    (origin-method origin))
+
+  (define uri                                     ;represented as string
+    (origin-uri origin))
+
+  (define (resolve urls)
+    (map uri->string
+         (append-map (cut maybe-expand-mirrors <> %mirrors)
+                     (map string->uri urls))))
+
+  `((type . ,(cond ((eq? url-fetch method) 'url)
+                   ((eq? git-fetch method) 'git)
+                   ((eq? svn-fetch method) 'svn)
+                   (else                   #nil)))
+    ,@(cond ((eq? url-fetch method)
+             `(("url" . ,(list->vector
+                          (resolve
+                           (match uri
+                             ((? string? url) (list url))
+                             ((urls ...) urls)))))))
+            ((eq? git-fetch method)
+             `(("git_url" . ,(git-reference-url uri))))
+            ((eq? svn-fetch method)
+             `(("svn_url" . ,(svn-reference-url uri))))
+            (else '()))
+    ,@(if (eq? method git-fetch)
+          `(("git_ref" . ,(git-reference-commit uri)))
+          '())
+    ,@(if (eq? method svn-fetch)
+          `(("svn_revision" . ,(svn-reference-revision
+                                uri)))
+          '())))
+
 (define (packages-json-builder)
   "Return a JSON page listing all packages."
-  (define (origin->json origin)
-    (define method
-      (origin-method origin))
-
-    `((type . ,(cond ((eq? url-fetch method) 'url)
-                     ((eq? git-fetch method) 'git)
-                     ((eq? svn-fetch method) 'svn)
-                     (else                   #nil)))
-      ,@(cond ((eq? url-fetch method)
-               `(("url" . ,(match (origin-uri origin)
-                             ((? string? url) (vector url))
-                             ((urls ...) (list->vector urls))))))
-              ((eq? git-fetch method)
-               `(("git_url" . ,(git-reference-url (origin-uri origin)))))
-              ((eq? svn-fetch method)
-               `(("svn_url" . ,(svn-reference-url (origin-uri origin)))))
-              (else '()))
-      ,@(if (eq? method git-fetch)
-            `(("git_ref" . ,(git-reference-commit (origin-uri origin))))
-            '())
-      ,@(if (eq? method svn-fetch)
-            `(("svn_revision" . ,(svn-reference-revision
-                                  (origin-uri origin))))
-            '())))
-
   (define (package->json package)
     (define cpe-name
       (assoc-ref (package-properties package) 'cpe-name))



reply via email to

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