summaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 09:32:44 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 09:32:44 +0200
commit1faf9f1b03d7d257307f6ea0500063e4be939d17 (patch)
treef42d21437f7a70f0f37f423646f511468c648066 /internal/cli
parent9321fd3490b1739e4c84fd229a2cfef244ffdc29 (diff)
downloadlectio-1faf9f1b03d7d257307f6ea0500063e4be939d17.tar.gz
lectio-1faf9f1b03d7d257307f6ea0500063e4be939d17.zip
cli: keep real terminal width when paging; validate -c list before pager
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/cli.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/internal/cli/cli.go b/internal/cli/cli.go
index 5ee4a34..253e718 100644
--- a/internal/cli/cli.go
+++ b/internal/cli/cli.go
@@ -169,14 +169,30 @@ func Run(args []string, stdin io.Reader, stdout, stderr io.Writer) int {
if effWidth == 0 {
effWidth = cfg.Width
}
+ if effWidth == 0 {
+ // Detect the real terminal width now, from stdout, before it may be
+ // replaced by the pager's pipe below -- otherwise paging would wrap at
+ // the default width instead of the terminal's.
+ if tw := termWidth(stdout); tw > 0 {
+ effWidth = tw
+ }
+ }
- // An invalid -b must exit 2 before any pager starts -- don't page an
- // error. When compareList != "", bibleVer is unused (compare wins, as
- // before) so it's deliberately left unvalidated in that case too.
+ // Validate versions before any pager starts -- don't page an error. When
+ // compareList != "", bibleVer is unused (compare wins, as before) so it's
+ // deliberately left unvalidated in that case.
if bibleVer != "" && compareList == "" && !config.ValidVersion(bibleVer) {
fmt.Fprintf(stderr, "lectio: unknown version %q (want one of pl, wuj, vul, grb, drb)\n", bibleVer)
return 2
}
+ if compareList != "" {
+ for _, v := range strings.Split(compareList, ",") {
+ if v = strings.TrimSpace(v); v != "" && !config.ValidVersion(v) {
+ fmt.Fprintf(stderr, "lectio: unknown version %q (want one of pl, wuj, vul, grb, drb)\n", v)
+ return 2
+ }
+ }
+ }
out := stdout
finish := func() {}