aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-19 08:57:42 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-19 08:57:42 +0200
commit544836cf0f6373a0a753d0953ce7e60fd96337af (patch)
treea3d22c5d754c435ad2e65203d60690e6b1dea039 /Makefile
parent9608e49a0956c8228a022454751765404d46daa5 (diff)
downloadcolitur-544836cf0f6373a0a753d0953ce7e60fd96337af.tar.gz
colitur-544836cf0f6373a0a753d0953ce7e60fd96337af.zip
feat(render): XML emitter and schema
Element-per-field; attributes carry identity only and there is no mixed content, so a consumer's XPath never has to distinguish the two. Schema validation is an opt-in make check-schema via xmllint, not an in-suite assertion: validating XSD needs an XML library and the dependency list is frozen. It prints SKIPPED loudly when xmllint is absent, because a silent skip reads as a pass. The suite asserts well-formedness properties directly instead. This corrects the design spec, which claimed in-test validation.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile11
1 files changed, 10 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 5b3bb55..0d4d1d5 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ MAN5DIR := $(PREFIX)/share/man/man5
# over documenting the dune commands.
DUNE := opam exec --
-.PHONY: help build test check install uninstall reinstall clean fmt man doc release
+.PHONY: help build test check check-schema install uninstall reinstall clean fmt man doc release
help: ## show this help
@grep -hE '^[a-z-]+:.*##' $(MAKEFILE_LIST) | sed -E 's/:.*## /\t/' | sort
@@ -30,6 +30,15 @@ test: ## fast suite (~5s): properties sample 200 years
check: ## full gate (~2min): every year 1583-9999, not a sample
COLITUR_EXHAUSTIVE_SWEEP=1 $(DUNE) dune test --force
+check-schema: build ## validate emitted XML against schema/colitur-v1.xsd (needs xmllint; skipped if absent)
+ @if command -v xmllint >/dev/null 2>&1; then \
+ opam exec -- dune exec colitur -- emit --format xml --from 2027 --to 2027 > /tmp/colitur-check.xml && \
+ xmllint --noout --schema schema/colitur-v1.xsd /tmp/colitur-check.xml && \
+ echo "xml: valid against schema/colitur-v1.xsd"; \
+ else \
+ echo "SKIPPED: xmllint not installed -- XML is emitted but NOT schema-validated"; \
+ fi
+
install: build ## install binary, calendar data and man page into PREFIX (default ~/.local)
$(DUNE) dune install --prefix $(PREFIX)
@mkdir -p $(MANDIR)