aboutsummaryrefslogtreecommitdiff
path: root/internal/config/config.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 18:01:33 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 18:01:33 +0200
commit5e1664b8008675177a551aff1de371f54d4e20e4 (patch)
treeffe405e1e2767890e473f75f474d2781af683f1b /internal/config/config.go
parentf7344bb3de2885323a785bdc8d087bc034407fc4 (diff)
downloadlectio-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.go29
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,