From a5d28292399571e17f82d31c86b6e24586da218b Mon Sep 17 00:00:00 2001 From: rubmaker Date: Mon, 18 May 2026 20:36:27 +0800 Subject: [PATCH] cli: use full detected terminal width for auto wrap --- main.go | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index b31ca15..91d68af 100644 --- a/main.go +++ b/main.go @@ -164,6 +164,22 @@ func validateStyle(style string) error { return nil } +func resolveWidth(isTerminal bool, configuredWidth uint, widthFlagChanged bool, getTerminalWidth func() (int, error)) uint { + width := configuredWidth + if !widthFlagChanged { + if isTerminal && width == 0 { + w, err := getTerminalWidth() + if err == nil && w > 0 { + width = uint(w) //nolint:gosec + } + } + if width == 0 { + width = 80 + } + } + return width +} + func validateOptions(cmd *cobra.Command) error { // grab config values from Viper width = viper.GetUint("width") @@ -191,22 +207,13 @@ func validateOptions(cmd *cobra.Command) error { style = "notty" } - // Detect terminal width - if !cmd.Flags().Changed("width") { //nolint:nestif - if isTerminal && width == 0 { - w, _, err := term.GetSize(int(os.Stdout.Fd())) - if err == nil { - width = uint(w) //nolint:gosec - } - - if width > 120 { - width = 120 - } + width = resolveWidth(isTerminal, width, cmd.Flags().Changed("width"), func() (int, error) { + w, _, err := term.GetSize(int(os.Stdout.Fd())) + if err != nil { + return 0, err } - if width == 0 { - width = 80 - } - } + return w, nil + }) return nil }