diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-28 18:01:33 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-28 18:01:33 +0200 |
| commit | 5e1664b8008675177a551aff1de371f54d4e20e4 (patch) | |
| tree | ffe405e1e2767890e473f75f474d2781af683f1b /internal/config/config.go | |
| parent | f7344bb3de2885323a785bdc8d087bc034407fc4 (diff) | |
| download | lectio-5e1664b8008675177a551aff1de371f54d4e20e4.tar.gz lectio-5e1664b8008675177a551aff1de371f54d4e20e4.zip | |
bible: embed only the Vulgate by default; other corpora opt-in
Split the bundled corpora so the default binary carries only the
public-domain Latin Vulgate. wuj/drb/grb move to corpora_optional/ and are
compiled in only with `-tags fullbible`, or dropped into the user corpora
dir at runtime. This keeps the distributed AGPL binary free of third-party
scripture text -- bible corpora are not covered by lectio's licence.
- bible: read corpus files/metadata from core + optional embed FS
(embReadCorpus/embCorpusFiles); optionalFS is set only under the tag.
- config: default `versions` now reflects corpora actually available in the
build (Vulgate first), so a vul-only binary offers no absent versions.
- Makefile: `make build` = vul only; `make build-full` embeds the rest;
`make test` runs with -tags fullbible; check-corpora validates both dirs.
- tests: corpusmeta asserts on vul (the always-embedded corpus); the
versions-default expectation follows availableVersions().
Diffstat (limited to 'internal/config/config.go')
| -rw-r--r-- | internal/config/config.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index b6c9e0e..299c942 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -269,13 +269,40 @@ func (c Config) Selection() calendar.Selection { return sel } +// availableVersions lists the corpus codes actually present in this build (the +// embedded Vulgate, plus any compiled in with -tags fullbible or dropped into +// the user corpora dir), Vulgate first then the rest sorted. It keeps the +// default version list coherent with a vul-only binary: an absent corpus is +// never offered by default, so no spurious "(not in wuj)" appears out of the +// box. Users may still name any code explicitly in their config. +func availableVersions() []string { + var rest []string + haveVul := false + for _, m := range bible.Corpora() { + if m.Code == "vul" { + haveVul = true + continue + } + rest = append(rest, m.Code) + } + sort.Strings(rest) + out := rest + if haveVul { + out = append([]string{"vul"}, rest...) + } + if len(out) == 0 { + out = []string{"vul"} // safety: at least the always-embedded Vulgate + } + return out +} + // Default returns lectio's built-in configuration, used when no config file // is found and as the base that a partial config file overrides. func Default() Config { return Config{ SchemaVersion: 1, Lectionary: "new", - Versions: []string{"wuj", "vul", "grb", "drb"}, + Versions: availableVersions(), DefaultVersion: "vul", Width: 0, All: false, |
