diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 10:32:28 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 10:32:28 +0200 |
| commit | c9f3bf46f0de09edb796e35f3dcff349febf75c9 (patch) | |
| tree | c1a0b98b484e4da557c1ab205dfff0d92ce8ac36 /internal/cli/cli.go | |
| parent | a865374755480a4aef2a6156afccdf08a91422ea (diff) | |
| download | lectio-c9f3bf46f0de09edb796e35f3dcff349febf75c9.tar.gz lectio-c9f3bf46f0de09edb796e35f3dcff349febf75c9.zip | |
dayinfo: show feast/day name + colour (modern niedziela + traditional missalemeum) in cli/tui/web; v0.5.0
Diffstat (limited to 'internal/cli/cli.go')
| -rw-r--r-- | internal/cli/cli.go | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/internal/cli/cli.go b/internal/cli/cli.go index f4aec28..5954e23 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -329,7 +329,7 @@ func cacheTraditionalRange(from, to, lang string) int { cached := 0 for d := start; !d.After(end); d = d.AddDate(0, 0, 1) { - if _, err := tradlit.Load(d.Format("2006-01-02"), lang, false); err == nil { + if _, _, err := tradlit.Load(d.Format("2006-01-02"), lang, false); err == nil { cached++ } } @@ -383,7 +383,7 @@ func formatFreed(bytes int64) string { // -b/--bible): fetch via the readings router, apply the offline version // swap, then render each section's heading and render.GatherVersion blocks. func fetchAndPrint(cfg config.Config, version, date string, all, raw bool, width int, refresh bool, stdout, stderr io.Writer) int { - secs, err := readings.Load(cfg, readings.Options{ + secs, dayInfo, err := readings.Load(cfg, readings.Options{ Date: date, Refresh: refresh, Offline: cfg.Offline, @@ -405,6 +405,7 @@ func fetchAndPrint(cfg config.Config, version, date string, all, raw bool, width w := resolveWidth(width, false, stdout) if !raw { + printDayInfo(stdout, dayInfo) banner := bannerFor(cfg.UILanguage, all, date) fmt.Fprintln(stdout, banner) fmt.Fprintln(stdout, strings.Repeat("=", minInt(len(banner), w))) @@ -419,6 +420,31 @@ func fetchAndPrint(cfg config.Config, version, date string, all, raw bool, width return 0 } +// printDayInfo prints the day's celebration name -- and, if the source +// carries one, its temporal Season on its own line -- above the banner. +// Name/Season are never translated (source-language, like the readings/ +// citations themselves; see liturgy.DayInfo). A source that yielded no +// DayInfo (info.Name == "") prints nothing: the header is a nice-to-have, +// never an error condition. Callers only reach this when !raw; --raw skips +// it entirely, keeping piped output text-only. +// +// The CLI has no ANSI styling of its own (unlike the TUI's Faint/dim +// styles), so "dim" here is expressed structurally: the Season, if any, +// gets its own line under Name rather than sharing emphasis with it. +func printDayInfo(stdout io.Writer, info liturgy.DayInfo) { + if info.Name == "" { + return + } + name := info.Name + if info.Colour != "" { + name += " ยท " + info.Colour + } + fmt.Fprintln(stdout, name) + if info.Season != "" { + fmt.Fprintln(stdout, info.Season) + } +} + // bannerFor builds the "<Gospel|Readings> <connective> DATE" banner: the // "readings" word when every part is shown, "gospel" for the gospel-only // default, and the connective between word and date, all localised via @@ -475,7 +501,7 @@ func renderCompare(cfg config.Config, list, date string, all, raw bool, width in } versions = render.EffectiveVersions(versions, cfg.Lectionary, cfg.Offline) - secs, err := readings.Load(cfg, readings.Options{ + secs, dayInfo, err := readings.Load(cfg, readings.Options{ Date: date, Refresh: refresh, Offline: cfg.Offline, @@ -493,6 +519,7 @@ func renderCompare(cfg config.Config, list, date string, all, raw bool, width in w := resolveWidth(width, true, stdout) if !raw { + printDayInfo(stdout, dayInfo) banner := bannerFor(cfg.UILanguage, all, date) fmt.Fprintln(stdout, banner) fmt.Fprintln(stdout, strings.Repeat("=", minInt(len(banner), w))) |
