summary refs log tree commit diff
path: root/.guix
diff options
context:
space:
mode:
authorArun Isaac2026-10-09 00:26:00 +0100
committerArun Isaac2026-10-09 01:36:35 +0100
commit244a4821c89183dd6a953c790d4a953a66a8e4dd (patch)
treeb11c11fe773f854209bf577870a6f71fc0a64f28 /.guix
parent7802a6244ca6858c3e21e44b274c099075b32bcc (diff)
downloaddomagi-244a4821c89183dd6a953c790d4a953a66a8e4dd.tar.gz
domagi-244a4821c89183dd6a953c790d4a953a66a8e4dd.tar.lz
domagi-244a4821c89183dd6a953c790d4a953a66a8e4dd.zip
Document database schema in the manual.
Diffstat (limited to '.guix')
-rw-r--r--.guix/domagi-website.scm34
1 files changed, 32 insertions, 2 deletions
diff --git a/.guix/domagi-website.scm b/.guix/domagi-website.scm
index 83c785d..c924cab 100644
--- a/.guix/domagi-website.scm
+++ b/.guix/domagi-website.scm
@@ -17,6 +17,7 @@
 ;;; domagi. If not, see <https://www.gnu.org/licenses/>.
 
 (define-module (domagi-website)
+  #:use-module ((gnu packages diagram) #:select (pikchr))
   #:use-module ((gnu packages docbook) #:select (docbook-xsltng))
   #:use-module ((gnu packages fonts) #:select (font-charter font-fira-code))
   #:use-module ((gnu packages haskell-xyz) #:select (pandoc))
@@ -48,7 +49,30 @@
 (define domagi-web-manual-en-gexp
   (with-imported-modules '((guix build utils))
     #~(begin
-        (use-modules (guix build utils))
+        (use-modules (guix build utils)
+                     (ice-9 popen)
+                     (srfi srfi-26)
+                     (rnrs io ports))
+
+        (define (call-with-input-pipe command proc)
+          (let ((port #f))
+            (dynamic-wind
+              (lambda ()
+                (set! port (apply open-pipe* OPEN_READ command)))
+              (cut proc port)
+              (lambda ()
+                (unless (zero? (close-pipe port))
+                  (error "Command invocation failed" command))))))
+
+        (define (pikchr source svg)
+          (mkdir-p (dirname svg))
+          (call-with-output-file svg
+            (cut display
+                 (call-with-input-pipe (list #$(file-append pikchr "/bin/pikchr")
+                                             "--svg-only"
+                                             source)
+                   get-string-all)
+                 <>)))
 
         (setenv "HOME" "/tmp")
         (set-path-environment-variable
@@ -65,11 +89,17 @@
                           (string-append (getcwd) "/doc"))
         (invoke #$(file-append python "/bin/python3")
                 (string-append #$(package-source domagi) "/extractdoc.py"))
+        (chdir "doc")
+        (pikchr "er.pic"
+                (string-append #$output "/media/er.svg"))
+        (pikchr "schema.pic"
+                (string-append #$output "/media/schema.svg"))
         (invoke #$(file-append docbook-xsltng "/bin/docbook")
                 (string-append "--resources:" #$output)
                 "-xi:on"
                 "resource-base-uri=/domagi/manual/"
-                "-s:doc/domagi.dbk"
+                "mediaobject-output-base-uri=/domagi/manual/media/"
+                "-s:domagi.dbk"
                 (string-append "-o:" #$output "/dev/en/index.html")))))
 
 (define-public domagi-website