From b2537972f025ac4f47290328770e3be5ad778b4a Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Fri, 29 May 2026 00:07:19 +0200 Subject: feat: add EPUB validation with epubcheck --- .forgejo/workflows/build-epubs.yml | 6 +++++- README.md | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) 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-.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) -- cgit v1.2.3