summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--Makefile60
-rw-r--r--build-aux/build-home-page.el40
-rw-r--r--manifest.scm8
-rw-r--r--tissue.scm58
5 files changed, 63 insertions, 109 deletions
diff --git a/.gitignore b/.gitignore
index aaef8b4..85ad067 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1 @@
-doc/*.go
-doc/*.html
-website/fonts
-website/index.html
-website/manual
\ No newline at end of file
+.tissue
\ No newline at end of file
diff --git a/Makefile b/Makefile
deleted file mode 100644
index f0d256e..0000000
--- a/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# guix-forge --- Guix software forge meta-service
-# Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
-#
-# This file is part of guix-forge.
-#
-# guix-forge is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# guix-forge is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with guix-forge.  If not, see <https://www.gnu.org/licenses/>.
-
-EMACS = emacs
-GUILD = guild
-SKRIBILO = skribilo
-
-sources = $(wildcard forge/*.scm) $(wildcard forge/*/*.scm)
-doc_skribilo_config = doc/skribilo.scm
-doc_skribilo_config_go = $(doc_skribilo_config:.scm=.go)
-doc_sources = doc/forge.skb
-doc_snippets = $(wildcard doc/snippets/*.scm)
-doc_html = $(doc_sources:.skb=.html)
-fonts = $(addprefix $(GUIX_ENVIRONMENT)/share/fonts/web/, charter_regular.woff2 FiraCode-Regular.woff2 FiraCode-SemiBold.woff2)
-
-.PHONY: all html clean
-all: ;
-
-%.go: %.scm
-	$(GUILD) compile -L . -o $@ $<
-
-html: $(doc_html)
-
-$(doc_html): $(doc_sources) $(doc_snippets) $(sources) $(doc_skribilo_config_go)
-	rm -rf $@
-	mkdir -p $@
-	GUILE_LOAD_PATH=$(CURDIR):$(GUILE_LOAD_PATH) GUILE_LOAD_COMPILED_PATH=$(CURDIR):$(GUILE_LOAD_COMPILED_PATH) $(SKRIBILO) --target=html $< --output=$@/index.html
-
-website: website/index.html website/manual/dev/en website/fonts
-
-website/index.html: README.org build-aux/build-home-page.el
-	$(EMACS) -Q --batch --load build-aux/build-home-page.el --funcall build-website
-
-website/manual/dev/en: $(doc_html)
-	rm -rf $@
-	mkdir -p $(dir $@)
-	cp -vr $^ $@
-
-website/fonts: $(fonts)
-	rm -rf $@
-	mkdir -p $@
-	cp -v $^ $@/
-
-clean:
-	rm -rf $(doc_skribilo_config_go) website/index.html website/manual website/fonts
diff --git a/build-aux/build-home-page.el b/build-aux/build-home-page.el
deleted file mode 100644
index bdf79a0..0000000
--- a/build-aux/build-home-page.el
+++ /dev/null
@@ -1,40 +0,0 @@
-;;; guix-forge --- Guix software forge meta-service
-;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
-;;;
-;;; This file is part of guix-forge.
-;;;
-;;; guix-forge is free software: you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation, either version 3 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; guix-forge is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with guix-forge.  If not, see
-;;; <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This Emacs script generates the home page of the website from
-;; README.org.
-
-;;; Code:
-
-(require 'ox-html)
-
-(setq make-backup-files nil
-      org-export-with-section-numbers nil
-      org-export-with-sub-superscripts nil
-      org-export-with-toc nil
-      org-html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />"
-      org-html-head-include-default-style nil
-      org-html-head-include-scripts nil
-      org-html-postamble nil)
-
-(defun build-website ()
-  (with-current-buffer (find-file "README.org")
-    (org-export-to-file 'html "website/index.html")))
diff --git a/manifest.scm b/manifest.scm
index d931833..4101d1f 100644
--- a/manifest.scm
+++ b/manifest.scm
@@ -1,5 +1,5 @@
 ;;; guix-forge --- Guix software forge meta-service
-;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of guix-forge.
 ;;;
@@ -17,10 +17,10 @@
 ;;; along with guix-forge.  If not, see
 ;;; <https://www.gnu.org/licenses/>.
 
-(use-modules (gnu packages autotools)
+(use-modules (forge tissue)
+             (gnu packages autotools)
              ((gnu packages fonts) #:prefix guix:)
              (gnu packages gettext)
-             (gnu packages guile)
              ((gnu packages skribilo) #:prefix guix:)
              (guix git-download)
              (guix packages)
@@ -87,4 +87,4 @@
          ,@(package-native-inputs guix:skribilo))))))
 
 (packages->manifest
- (list font-charter font-fira-code guile-3.0 skribilo))
+ (list font-charter font-fira-code tissue))
diff --git a/tissue.scm b/tissue.scm
new file mode 100644
index 0000000..8cbfa9a
--- /dev/null
+++ b/tissue.scm
@@ -0,0 +1,58 @@
+;;; guix-forge --- Guix software forge meta-service
+;;; Copyright © 2023 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file is part of guix-forge.
+;;;
+;;; guix-forge is free software: you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published
+;;; by the Free Software Foundation, either version 3 of the License,
+;;; or (at your option) any later version.
+;;;
+;;; guix-forge is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with guix-forge.  If not, see
+;;; <https://www.gnu.org/licenses/>.
+
+(use-modules (tissue skribilo))
+
+(tissue-configuration
+ #:indexed-documents (append (map (lambda (filename)
+                                    (slot-set (read-gemtext-issue filename)
+                                              'web-uri
+                                              (string-append "/" (string-remove-suffix ".gmi" filename))))
+                                  (gemtext-files-in-directory "issues"))
+                             (map (lambda (identifier)
+                                    (slot-set (document-fragment "doc/forge.skb" identifier)
+                                              'web-uri
+                                              (string-append "/manual/dev/en/#"
+                                                             identifier)))
+                                  (list "chapter-introduction"
+                                        "chapter-tutorial"
+                                        "chapter-reference"))
+                             (map (lambda (commit)
+                                    (slot-set commit
+                                              'web-uri
+                                              (string-append "https://git.systemreboot.net/guix-forge/commit/?id="
+                                                             (commit-hash commit))))
+                                  (commits-in-current-repository)))
+ #:web-files (cons* (file "index.html"
+                          (skribe-exporter "website/index.skb"))
+                    (file "style.css"
+                          (copier "website/style.css"))
+                    (file "manual/dev/en/index.html"
+                          (skribe-exporter "doc/forge.skb"))
+                    (append (map (lambda (font-file)
+                                   (file (string-append "fonts/" font-file)
+                                         (copier (string-append (getenv "GUIX_ENVIRONMENT")
+                                                                "/share/fonts/web/" font-file))))
+                                 (list "charter_regular.woff2"
+                                       "FiraCode-Regular.woff2"
+                                       "FiraCode-SemiBold.woff2"))
+                            (map (lambda (filename)
+                                   (file (replace-extension filename "html")
+                                         (gemtext-exporter filename)))
+                                 (gemtext-files-in-directory "issues")))))