From c1b954ad517cef00bf480d5229b253a8c6524be7 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Thu, 23 Jul 2026 23:45:07 +0200 Subject: cli-ui,web: real flag parsing for lectio-ui/lectio-web (accept useful flags, reject unknown, -h/-v) --- internal/tui/tui.go | 23 ++++++++++++++++------- internal/tui/tui_test.go | 4 ++-- 2 files changed, 18 insertions(+), 9 deletions(-) (limited to 'internal/tui') 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") -- cgit v1.3