aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimen A. W. Olsen <hello@simenandre.no>2026-05-29 00:07:19 +0200
committerSimen A. W. Olsen <hello@simenandre.no>2026-05-29 00:07:19 +0200
commitb2537972f025ac4f47290328770e3be5ad778b4a (patch)
tree0d7c6396ced3bdba3e2109667694d2925e936f4e
parent0806fecb47f5a2a26e73ca8b6e28c08f9945ef75 (diff)
downloadziglang-docs-epub-b2537972f025ac4f47290328770e3be5ad778b4a.tar.gz
ziglang-docs-epub-b2537972f025ac4f47290328770e3be5ad778b4a.zip
feat: add EPUB validation with epubcheck
-rw-r--r--.forgejo/workflows/build-epubs.yml6
-rw-r--r--README.md13
2 files changed, 18 insertions, 1 deletions
diff --git a/.forgejo/workflows/build-epubs.yml b/.forgejo/workflows/build-epubs.yml
index 80ecf5d..e18556f 100644
--- a/.forgejo/workflows/build-epubs.yml
+++ b/.forgejo/workflows/build-epubs.yml
@@ -14,7 +14,8 @@ jobs:
- name: Install prerequisites
run: |
apt-get update
- apt-get install -y --no-install-recommends ca-certificates curl xz-utils git
+ apt-get install -y --no-install-recommends ca-certificates curl xz-utils git \
+ default-jre-headless epubcheck
- uses: actions/checkout@v4
@@ -31,6 +32,9 @@ jobs:
- name: Build EPUBs
run: zig build run
+ - name: Validate EPUBs
+ run: ./validate.sh
+
- name: Commit updated EPUBs
run: |
set -eux
diff --git a/README.md b/README.md
index 6252224..f892611 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,19 @@ zig build test # run unit tests
EPUBs land in `epubs/zig-<version>.epub`.
+### Validating output
+
+The tool guarantees well-formed XHTML, but full EPUB3 conformance (the kind of
+thing Kindle's "Send to Kindle" enforces) is checked with
+[epubcheck](https://github.com/w3c/epubcheck), the official validator:
+
+```sh
+brew install epubcheck # one-time (needs a JRE)
+./validate.sh # runs epubcheck on every epub; non-zero exit on errors
+```
+
+`validate.sh` fails loudly if any EPUB has errors, so it doubles as a CI gate.
+
## Continuous integration
`.forgejo/workflows/build-epubs.yml` runs on [Codeberg](https://codeberg.org)