#!/usr/bin/env -S guix time-machine --commit=v1.4.0 -- shell guix --development guix guile guile-gdbm-ffi -- bash
GUILEPATH=$GUIX_ENVIRONMENT/share/guile/site/3.0
rm -rf modules
mkdir -p modules/guix modules/gnu
ln -sf $GUILEPATH/guix.scm $GUILEPATH/gnu.scm modules
ln -sf $GUILEPATH/guix/*.scm modules/guix
ln -sf $GUILEPATH/gnu/*.scm modules/gnu
pkgs="'($(cd modules; find -L -name '*.scm' | sort | sed 's/\.\/\(.*\)\.scm/(\1)/' | tr /\\n ' '))"
echo "$pkgs"
version="$(guile -L $GUILEPATH -c '(use-modules (guix config)) (display %guix-version)')"
name="$(guile -L $GUILEPATH -c '(use-modules (guix config)) (display %guix-package-name)') topmost-level modules"
guile -L $GUILEPATH ./makedocs.scm "$pkgs" "$name" guixapi.texi "$version" | tee guixapi.texi
makeinfo --pdf guixapi.texi
(use-modules (texinfo serialize))
(use-modules (texinfo reflection))
(define modules (eval-string (cadr (command-line))))
(define name (caddr (command-line)))
(define filename (cadddr (command-line)))
(define category "API Documentstion")
(define description (string-append "Documentation for " name " modules API."))
(define version (cadddr (cdr (command-line))))
(define moduledescriptions (map
(lambda (module)
(list (string-append
(string-join (map
symbol->string
module))
".scm")))
modules))
(display (stexi->texi
(package-stexi-documentation
modules
name
filename
(package-stexi-standard-prologue
name
filename
category
description
(package-stexi-standard-copying name version "updated" '() "copyright holder" "permissions")
(package-stexi-standard-titlepage name version "updated" '())
(package-stexi-standard-menu name modules moduledescriptions '())
)
'()
)
))