summaryrefslogtreecommitdiff
path: root/website/apps/packages/templates/package.scm
blob: 55fc6b2ada48030ca15d9d192ad24887705b043e (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
;;; GNU Guix web site
;;; Initially written by sirgazil who waves all
;;; copyright interest on this file.

(define-module (apps packages templates package)
  #:use-module (apps aux web)
  #:use-module (apps base templates components)
  #:use-module (apps base templates theme)
  #:use-module (apps base types)
  #:use-module (apps base utils)
  #:use-module (apps packages templates components)
  #:use-module (apps packages types)
  #:use-module (apps packages utils)
  #:use-module (guix gnu-maintenance)
  #:use-module (guix packages)
  #:export (package-t))


(define (package-t context)
  "Return an SHTML representation of a package page."
  (let* ((package (context-datum context "package"))
	 (package-id (string-append (package-name package)
				    " "
				    (package-version package)))
	 (lint-issues (package-lint-issues package)))
    (theme
     #:title (list package-id "Packages")
     #:description (package-synopsis-shtml package)
     #:keywords
     '("GNU" "Linux" "Unix" "Free software" "Libre software"
       "Operating system" "GNU Hurd" "GNU Guix package manager"
       "GNU Guile" "Guile Scheme" "Transactional upgrades"
       "Functional package management" "Reproducibility")
     #:active-menu-item "Packages"
     #:css
     (list (guix-url "static/base/css/page.css")
	   (guix-url "static/packages/css/package.css"))
     #:crumbs
     (list (crumb "Packages" (guix-url "packages/"))
	   (crumb package-id
		  (guix-url (package-url-path package))))
     #:content
     `(main
       (article
	(@ (class "page centered-block limit-width"))
	(h2 ,package-id " "
	    (span
	     (@ (class "synopsis"))
	     ,(package-synopsis-shtml package)))

	(p ,(if (gnu-package? package)
                '(it "This is a GNU package.  ")
                "")
           ,(package-description-shtml package))

	(ul
	 (@ (class "package-info"))
	 (li (b "Website: ")
	     (a (@ (href ,(package-home-page package)))
		,(package-home-page package)))
	 (li (b "License: ")
	     ,(license->shtml (package-license package)))
	 (li (b "Package source: ")
	     ,(location->shtml (package-location package)))
	 (li (b "Patches: ")
	     ,(patches->shtml (package-patches package)))
	 (li (b "Builds: ")
	     ,(supported-systems->shtml package)))

	;; Lint issues.
	,(if (null? lint-issues)
	     ""
	     `((h3 "Lint issues")
	       (p
		,(issue-count->shtml (length lint-issues)) ". "
		"See " (a (@ (href "#")) "package definition")
		" in Guix source code.")

	       ,@(map lint-issue->shtml lint-issues))))))))