;;; run64 --- SRFI-64 test runner ;;; Copyright © 2025–2026 Arun Isaac ;;; ;;; This file is part of run64. ;;; ;;; run64 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. ;;; ;;; run64 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 run64. If not, see . (define-module (run64-website) #:use-module ((gnu packages textutils) #:select (aha)) #:use-module ((gnu packages guile) #:select (guile-3.0)) #:use-module ((gnu packages haskell-xyz) #:select (pandoc)) #:use-module (guix gexp) #:use-module (guix packages) #:use-module ((run64-package) #:select (guile-run64))) (define run64-website-home-page-gexp (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils) (rnrs base) (rnrs io ports) (srfi srfi-11) (srfi srfi-26) (ice-9 match) (ice-9 popen)) ;; Run run64 on example.scm to produce example-output.html. (set-path-environment-variable "PATH" '("bin") (list #$aha #$guile-3.0 #$guile-run64)) (copy-file #$(file-append (package-source guile-run64) "/example.scm") "example.scm") (let ((commands '(("guile-run64" "example.scm") ("aha" "--no-header"))) (success? (lambda (pid) (match (waitpid pid) ((_ . status) (zero? (status:exit-val status))))))) (let-values (((from to pids) (pipeline commands))) (let ((example-output (get-bytevector-all from))) (match pids ((aha-pid guile-run64-pid) ;; We only check for the success of aha since guile-run64 is ;; supposed to fail. (assert (success? aha-pid)))) (close to) (close from) (call-with-output-file "example-output.html" (cut put-bytevector <> example-output))))) (invoke #$(file-append pandoc "/bin/pandoc") (string-append "--lua-filter=" #$(local-file "../website/insert-example-output.lua")) "--standalone" "--metadata" "title=run64" "--css=style.css" (string-append "--output=" #$output) #$(file-append (package-source guile-run64) "/README.md"))))) (define-public run64-website (file-union "run64-website" `(("index.html" ,(computed-file "run64-website-home-page.html" run64-website-home-page-gexp)) ("style.css" ,(local-file "../website/style.css")) ("releases" ,(local-file "../website/releases" #:recursive? #t))))) run64-website