aboutsummaryrefslogtreecommitdiff
path: root/internal/cli/cli.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 10:32:28 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 10:32:28 +0200
commitc9f3bf46f0de09edb796e35f3dcff349febf75c9 (patch)
treec1a0b98b484e4da557c1ab205dfff0d92ce8ac36 /internal/cli/cli.go
parenta865374755480a4aef2a6156afccdf08a91422ea (diff)
downloadlectio-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.go33
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)))