diff --git a/build-aux/list-packages.scm b/build-aux/list-packages.scm index 34839541ec..398d3039cb 100755 --- a/build-aux/list-packages.scm +++ b/build-aux/list-packages.scm @@ -30,6 +30,7 @@ exec guile -l "$0" \ #:use-module (sxml simple) #:use-module (web uri) #:use-module (ice-9 match) + #:use-module (srfi srfi-1) #:export (list-packages)) ;;; Commentary: @@ -38,6 +39,14 @@ exec guile -l "$0" \ ;;; ;;; Code: +(define lookup-gnu-package + (let ((gnu (official-gnu-packages))) + (lambda (name) + "Return the package description for GNU package NAME, or #f." + (find (lambda (package) + (equal? (gnu-package-name package) name)) + gnu)))) + (define (package->sxml package) "Return HTML-as-SXML representing PACKAGE." (define (source-url package) @@ -65,6 +74,10 @@ exec guile -l "$0" \ (->sxml (package-license package))) + (define (package-logo name) + (and=> (lookup-gnu-package name) + gnu-package-logo)) + (let ((description-id (symbol->string (gensym (package-name package))))) `(tr (td ,(if (gnu-package? package) @@ -81,6 +94,12 @@ exec guile -l "$0" \ ,(package-synopsis package)) (div (@ (id ,description-id) (style "position: relative; display: none;")) + ,(match (package-logo (package-name package)) + ((? string? url) + `(img (@ (src ,url) + (height "35em") + (style "float: left; padding-right: 1em;")))) + (_ #f)) (p ,(package-description package)) ,(license package) (a (@ (href ,(package-home-page package)))