docs: The Book of Fabric -- the FABRIC design record as one book, built and published with every release (#138) [skip ci]

`make fabric` -> build/docs/BookOfFabric.pdf (722 pages): Part I the living
record (FABRIC-3), Part II the closed documents in the order written, Part
III the forward-looking notes; its title page carries the version (git
describe --tags: a release's tag) and the commit. Built from the same pandoc
fragments as the book; the book's preamble moved into docs/book/preamble.tex,
shared by both (the book builds as before, 821 pages).

scripts/nightly.sh: the docs stage builds it ($DOCS/fabric.pdf); publish
sends it as classifier `fabric`; gitea-release attaches every PDF in $DOCS,
so every release carries it. Progress for the rest of alpha.4's documents:
docs/v4.0.0/plans/2026-11-10-alpha4-documents.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
This commit is contained in:
Claude
2026-11-10 11:21:32 +00:00
parent 836b4423e1
commit 41abad0159
7 changed files with 234 additions and 102 deletions
+6 -3
View File
@@ -42,7 +42,8 @@
# The book (make docs), the formal volumes (make -C docs/formal vols) and the API reference
# (make -C docs/formal doxygen), into build/nightly-docs/.
# scripts/nightly.sh publish-docs <URL>
# org.starship:documentation:<VERSION>: classifier book, vol1, vol2, vol3, api (pdf).
# org.starship:documentation:<VERSION>: classifier book, fabric (The Book of Fabric, #138),
# vol1, vol2, vol3, api (pdf).
#
# VERSION is <LITHOS_VERSION>-SNAPSHOT, or NIGHTLY_VERSION when set (a release sets it from its
# tag). NEXUS_USER (default ci-publisher) and NEXUS_PASSWORD; publishing needs mvn and a JRE.
@@ -173,8 +174,10 @@ publish)
docs)
rm -rf "$DOCS"; mkdir -p "$DOCS"
make --no-print-directory docs
make --no-print-directory fabric
make --no-print-directory -C docs/formal vols doxygen
cp build/docs/LithosAnanke.pdf "$DOCS/book.pdf"
cp build/docs/BookOfFabric.pdf "$DOCS/fabric.pdf"
for v in 1 2 3; do cp "docs/formal/build/vol$v/main.pdf" "$DOCS/vol$v.pdf"; done
cp docs/formal/build/doxygen/StarForth-API-Reference.pdf "$DOCS/api.pdf"
(cd "$DOCS" && sha256sum ./*.pdf | tee SHA256SUMS)
@@ -217,8 +220,8 @@ print(json.dumps(notes.strip() + "\n\n## Checksums (SHA-256)\n\n```\n" + sums.st
;;
publish-docs)
url=${2:-}; [ -n "$url" ] || usage
need "$DOCS/book.pdf" "$DOCS/vol1.pdf" "$DOCS/vol2.pdf" "$DOCS/vol3.pdf" "$DOCS/api.pdf"
deploy "$url" documentation "$DOCS/book.pdf" pdf book \
need "$DOCS/book.pdf" "$DOCS/fabric.pdf" "$DOCS/vol1.pdf" "$DOCS/vol2.pdf" "$DOCS/vol3.pdf" "$DOCS/api.pdf"
deploy "$url" documentation "$DOCS/book.pdf" pdf book "$DOCS/fabric.pdf" pdf fabric \
"$DOCS/vol1.pdf" pdf vol1 "$DOCS/vol2.pdf" pdf vol2 "$DOCS/vol3.pdf" pdf vol3 \
"$DOCS/api.pdf" pdf api
;;