Skip to content

Commit c768137

Browse files
authored
fix: Wrap help flags at 100 chars (#2893)
Because the actual flags take quite a bit of space, wrapping at 80 characters creates a very cramped output for e.g. `coder server`, for this reasons, flags are wrapped at 100 chars (vs. standard 80). The `Consumes $ENV_FLAG` message was put on a newline for consistency, this should allow users to learn where to look for the informations. Side note: we should perhaps stop adding period (`.`) at the end of flag descriptions to be consistent, for instance, command helps usually don't have one. This change fixes the biggest issue in #2363, but not all `--help` output is guaranteed (yet) to wrap at 80-100 chars. Fixes #2363
1 parent 2bf78aa commit c768137

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

cli/cliflag/cliflag.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,14 @@ func DurationVarP(flagset *pflag.FlagSet, ptr *time.Duration, name string, short
102102
}
103103

104104
func fmtUsage(u string, env string) string {
105-
if env == "" {
106-
return fmt.Sprintf("%s.", u)
105+
if env != "" {
106+
// Avoid double dotting.
107+
dot := "."
108+
if strings.HasSuffix(u, ".") {
109+
dot = ""
110+
}
111+
u = fmt.Sprintf("%s%s\nConsumes $%s", u, dot, env)
107112
}
108113

109-
return fmt.Sprintf("%s - consumes $%s.", u, env)
114+
return u
110115
}

cli/cliflag/cliflag_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestCliflag(t *testing.T) {
2424
require.NoError(t, err)
2525
require.Equal(t, def, got)
2626
require.Contains(t, flagset.FlagUsages(), usage)
27-
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf(" - consumes $%s", env))
27+
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf("Consumes $%s", env))
2828
})
2929

3030
t.Run("StringEnvVar", func(t *testing.T) {
@@ -48,7 +48,7 @@ func TestCliflag(t *testing.T) {
4848
require.NoError(t, err)
4949
require.Equal(t, def, got)
5050
require.Contains(t, flagset.FlagUsages(), usage)
51-
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf(" - consumes $%s", env))
51+
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf("Consumes $%s", env))
5252
})
5353

5454
t.Run("StringVarPEnvVar", func(t *testing.T) {
@@ -74,7 +74,7 @@ func TestCliflag(t *testing.T) {
7474
require.NoError(t, err)
7575
require.Equal(t, def, got)
7676
require.Contains(t, flagset.FlagUsages(), usage)
77-
require.NotContains(t, flagset.FlagUsages(), " - consumes")
77+
require.NotContains(t, flagset.FlagUsages(), "Consumes")
7878
})
7979

8080
t.Run("StringArrayDefault", func(t *testing.T) {
@@ -117,7 +117,7 @@ func TestCliflag(t *testing.T) {
117117
require.NoError(t, err)
118118
require.Equal(t, uint8(def), got)
119119
require.Contains(t, flagset.FlagUsages(), usage)
120-
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf(" - consumes $%s", env))
120+
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf("Consumes $%s", env))
121121
})
122122

123123
t.Run("IntEnvVar", func(t *testing.T) {
@@ -156,7 +156,7 @@ func TestCliflag(t *testing.T) {
156156
require.NoError(t, err)
157157
require.Equal(t, def, got)
158158
require.Contains(t, flagset.FlagUsages(), usage)
159-
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf(" - consumes $%s", env))
159+
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf("Consumes $%s", env))
160160
})
161161

162162
t.Run("BoolEnvVar", func(t *testing.T) {
@@ -195,7 +195,7 @@ func TestCliflag(t *testing.T) {
195195
require.NoError(t, err)
196196
require.Equal(t, def, got)
197197
require.Contains(t, flagset.FlagUsages(), usage)
198-
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf(" - consumes $%s", env))
198+
require.Contains(t, flagset.FlagUsages(), fmt.Sprintf("Consumes $%s", env))
199199
})
200200

201201
t.Run("DurationEnvVar", func(t *testing.T) {

cli/root.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -348,12 +348,12 @@ func usageTemplate() string {
348348
349349
{{- if .HasAvailableLocalFlags}}
350350
{{usageHeader "Flags:"}}
351-
{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}
351+
{{.LocalFlags.FlagUsagesWrapped 100}}
352352
{{end}}
353353
354354
{{- if .HasAvailableInheritedFlags}}
355355
{{usageHeader "Global Flags:"}}
356-
{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}
356+
{{.InheritedFlags.FlagUsagesWrapped 100}}
357357
{{end}}
358358
359359
{{- if .HasHelpSubCommands}}

0 commit comments

Comments
 (0)