list-packages: Show the package logo, when available.
* build-aux/list-packages.scm (lookup-gnu-package): New procedure. (package->sxml): Add the package logo, when available, next to the description.master
parent
6a3380dfbf
commit
d04434c067
|
@ -30,6 +30,7 @@ exec guile -l "$0" \
|
||||||
#:use-module (sxml simple)
|
#:use-module (sxml simple)
|
||||||
#:use-module (web uri)
|
#:use-module (web uri)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
#:export (list-packages))
|
#:export (list-packages))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
@ -38,6 +39,14 @@ exec guile -l "$0" \
|
||||||
;;;
|
;;;
|
||||||
;;; Code:
|
;;; 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)
|
(define (package->sxml package)
|
||||||
"Return HTML-as-SXML representing PACKAGE."
|
"Return HTML-as-SXML representing PACKAGE."
|
||||||
(define (source-url package)
|
(define (source-url package)
|
||||||
|
@ -65,6 +74,10 @@ exec guile -l "$0" \
|
||||||
|
|
||||||
(->sxml (package-license package)))
|
(->sxml (package-license package)))
|
||||||
|
|
||||||
|
(define (package-logo name)
|
||||||
|
(and=> (lookup-gnu-package name)
|
||||||
|
gnu-package-logo))
|
||||||
|
|
||||||
(let ((description-id (symbol->string
|
(let ((description-id (symbol->string
|
||||||
(gensym (package-name package)))))
|
(gensym (package-name package)))))
|
||||||
`(tr (td ,(if (gnu-package? package)
|
`(tr (td ,(if (gnu-package? package)
|
||||||
|
@ -81,6 +94,12 @@ exec guile -l "$0" \
|
||||||
,(package-synopsis package))
|
,(package-synopsis package))
|
||||||
(div (@ (id ,description-id)
|
(div (@ (id ,description-id)
|
||||||
(style "position: relative; display: none;"))
|
(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))
|
(p ,(package-description package))
|
||||||
,(license package)
|
,(license package)
|
||||||
(a (@ (href ,(package-home-page package)))
|
(a (@ (href ,(package-home-page package)))
|
||||||
|
|
Reference in New Issue