aboutsummaryrefslogtreecommitdiff
path: root/internal/tui
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-23 23:45:07 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-23 23:45:07 +0200
commitc1b954ad517cef00bf480d5229b253a8c6524be7 (patch)
tree376a281de7604782722d5780657aff319c32a1d6 /internal/tui
parent369c995292b0ae830e077c5845f0b09fbe3508a4 (diff)
downloadlectio-c1b954ad517cef00bf480d5229b253a8c6524be7.tar.gz
lectio-c1b954ad517cef00bf480d5229b253a8c6524be7.zip
cli-ui,web: real flag parsing for lectio-ui/lectio-web (accept useful flags, reject unknown, -h/-v)
Diffstat (limited to 'internal/tui')
-rw-r--r--internal/tui/tui.go23
-rw-r--r--internal/tui/tui_test.go4
2 files changed, 18 insertions, 9 deletions
diff --git a/internal/tui/tui.go b/internal/tui/tui.go
index 47314b6..16cb304 100644
--- a/internal/tui/tui.go
+++ b/internal/tui/tui.go
@@ -44,24 +44,33 @@ type errMsg struct {
}
// New builds the initial model: cfg.Offline drops "pl" from the version
-// list (render.OfflineVersions), the active version starts at
-// cfg.DefaultVersion (falling back to the first version if not found, or
-// "" if there are none), and the date starts at today. The first fetch is
-// issued by Init, not here.
-func New(cfg config.Config) Model {
+// list (render.OfflineVersions). startVersion selects the active version
+// (falling back to cfg.DefaultVersion when ""), still resolved through
+// EffectiveVersions/indexOf so an unavailable version falls back to index 0.
+// startDate selects the starting date (falling back to today when ""). The
+// first fetch is issued by Init, not here.
+func New(cfg config.Config, startDate, startVersion string) Model {
versions := render.EffectiveVersions(append([]string(nil), cfg.Versions...), cfg.Lectionary, cfg.Offline)
- idx := indexOf(versions, cfg.DefaultVersion)
+ if startVersion == "" {
+ startVersion = cfg.DefaultVersion
+ }
+ idx := indexOf(versions, startVersion)
if idx < 0 {
idx = 0
}
idx = clampIndex(idx, len(versions))
+ date := startDate
+ if date == "" {
+ date = time.Now().Format("2006-01-02")
+ }
+
return Model{
cfg: cfg,
versions: versions,
verIdx: idx,
- date: time.Now().Format("2006-01-02"),
+ date: date,
loading: true,
}
}
diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go
index 60b473b..2b966ee 100644
--- a/internal/tui/tui_test.go
+++ b/internal/tui/tui_test.go
@@ -10,7 +10,7 @@ import (
)
func TestVersionCycle(t *testing.T) {
- m := New(config.Config{Versions: []string{"pl", "wuj", "vul"}, DefaultVersion: "pl"})
+ m := New(config.Config{Versions: []string{"pl", "wuj", "vul"}, DefaultVersion: "pl"}, "", "")
if m.version() != "pl" {
t.Fatalf("start = %q", m.version())
}
@@ -25,7 +25,7 @@ func TestVersionCycle(t *testing.T) {
}
func TestOfflineDropsPL(t *testing.T) {
- m := New(config.Config{Versions: []string{"pl", "wuj", "vul"}, DefaultVersion: "pl", Offline: true})
+ m := New(config.Config{Versions: []string{"pl", "wuj", "vul"}, DefaultVersion: "pl", Offline: true}, "", "")
for _, v := range m.versions {
if v == "pl" {
t.Error("offline model kept pl")