From ee5f1e21f306d93b82d657917c92cc379c1df285 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 27 Jul 2026 20:43:54 +0200 Subject: build: corpus-validate script + add-corpus/check-corpora make targets --- Makefile | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index f5018eb..50fcb87 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ LECTIO_WEB := lectio-web PREFIX ?= $(HOME)/.local BINDIR := $(PREFIX)/bin -.PHONY: help build install uninstall test vet fmt clean cross +.PHONY: help build install uninstall test vet fmt clean cross check-corpora add-corpus help: ## show this help @grep -hE '^[a-z-]+:.*##' $(MAKEFILE_LIST) | sed -E 's/:.*## /\t/' | sort build: ## build ./lectio, ./lectio-ui and ./lectio-web @@ -19,7 +19,7 @@ install: ## build and install all three to $(BINDIR) @echo "installed $(BINDIR)/$(LECTIO), $(BINDIR)/$(LECTIO_UI) and $(BINDIR)/$(LECTIO_WEB)" uninstall: ## remove installed binaries rm -f $(BINDIR)/$(LECTIO) $(BINDIR)/$(LECTIO_UI) $(BINDIR)/$(LECTIO_WEB) -test: ## run tests +test: check-corpora ## run tests go test ./... vet: ## go vet go vet ./... @@ -36,3 +36,25 @@ cross: ## cross-compile into dist/ GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO_UI)-$$os-$$arch$$ext ./cmd/lectio-ui; \ GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO_WEB)-$$os-$$arch$$ext ./cmd/lectio-web; \ done + +# Validate every embedded corpus (CI gate). grb is EXEMPT: it is a scholarly +# Septuagint corpus whose Book column intentionally carries Orthodox-canon +# extras (1-4 Esdras/Maccabees, Odes, Psalms of Solomon) and manuscript variants +# (…(Theodotion)/(Sinaiticus)/(Vaticanus)) that are not in the 73-key Catholic +# canon and would collide with canonical keys if renamed. --corpus-check grb +# correctly reports these; they are by design, not defects to fix here. +check-corpora: ## validate all embedded bible corpora (skips grb, see comment) + @for f in internal/bible/corpora/*.tsv; do \ + code=$$(basename $$f .tsv); \ + [ "$$code" = grb ] && { echo "skipping grb (broader LXX canon)"; continue; }; \ + echo "checking $$code"; \ + go run ./cmd/lectio --corpus-check $$code || exit 1; \ + done + +# Validate then embed a corpus pair: make add-corpus CORPUS=fr-crampon SRC=/path/to/dir +add-corpus: ## validate + copy a corpus pair into internal/bible/corpora/, then build + @test -n "$(CORPUS)" || { echo "set CORPUS=" >&2; exit 2; } + @test -n "$(SRC)" || { echo "set SRC=" >&2; exit 2; } + go run ./cmd/lectio --corpus-check "$(SRC)/$(CORPUS).tsv" + cp "$(SRC)/$(CORPUS).tsv" "$(SRC)/$(CORPUS).ini" internal/bible/corpora/ + $(MAKE) build -- cgit v1.3