From cc6655134e155dd0879ecb8eb009271e17488834 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 17 Aug 2026 16:19:02 +0200 Subject: feat(cli): --version, a CHANGELOG, and a release target Groundwork for tagging. The project had no version anywhere: not in dune-project, not in the binary, no CHANGELOG, no tags. The version lives in two places -- dune-project, which generates colitur.opam, and a constant in bin/main.ml, which is what --version prints. Two rather than one because dune's watermarking only substitutes in a release tarball, so a binary built the ordinary way from a checkout would report a placeholder. The release target rewrites both and then re-checks both, and finally requires the freshly built binary to report the version it just wrote: a release that bumped one and not the other would ship a binary disagreeing with its own package metadata. --version is deliberately not embedded in the help text. cli.t pins help's first line, and a version there would mean editing a test expectation every release for no gain. The release target mirrors lectio's, refusals included: no release from a dirty tree, none without a CHANGELOG entry for that version, none whose version bump silently failed to apply, and `make check` -- the full 1583-9999 sweep, not the sampling suite -- must pass before the tag is created. --- colitur.opam | 1 + 1 file changed, 1 insertion(+) (limited to 'colitur.opam') diff --git a/colitur.opam b/colitur.opam index 3edcfa4..12d0e2b 100644 --- a/colitur.opam +++ b/colitur.opam @@ -1,5 +1,6 @@ # This file is generated by dune, edit dune-project instead opam-version: "2.0" +version: "0.1.0" synopsis: "Deterministic liturgical calendar engine (computus liturgicus)" depends: [ "ocaml" -- cgit v1.3