@@ -33,6 +33,9 @@ func fmtDefValue(value interface{}) string {
33
33
}
34
34
}
35
35
36
+ // \xFF is used to escape a \t so tabwriter ignores it.
37
+ const tabEscape = "\xFF "
38
+
36
39
func renderFlagHelp (fl * flag.FlagSet , w io.Writer ) {
37
40
var count int
38
41
fl .VisitAll (func (f * flag.Flag ) {
@@ -42,9 +45,9 @@ func renderFlagHelp(fl *flag.FlagSet, w io.Writer) {
42
45
43
46
count ++
44
47
if f .DefValue == "" {
45
- fmt .Fprintf (w , "\t %v%v\t %v\n " , flagDashes (f .Name ), f .Name , f .Usage )
48
+ fmt .Fprintf (w , tabEscape + "\t %v%v\t %v\n " , flagDashes (f .Name ), f .Name , f .Usage )
46
49
} else {
47
- fmt .Fprintf (w , "\t %v%v=%v\t %v\n " , flagDashes (f .Name ), f .Name , fmtDefValue (f .DefValue ), f .Usage )
50
+ fmt .Fprintf (w , tabEscape + "\t %v%v=%v\t %v\n " , flagDashes (f .Name ), f .Name , fmtDefValue (f .DefValue ), f .Usage )
48
51
}
49
52
})
50
53
}
@@ -57,8 +60,11 @@ func renderHelp(cmd Command, fl *flag.FlagSet, w io.Writer) {
57
60
)
58
61
fmt .Fprintf (w , "%v\n " , cmd .Spec ().Desc )
59
62
63
+ tw := tabwriter .NewWriter (w , 0 , 4 , 2 , ' ' , tabwriter .StripEscape )
64
+ defer tw .Flush ()
65
+
60
66
// Render flag help.
61
- renderFlagHelp (fl , w )
67
+ renderFlagHelp (fl , tw )
62
68
63
69
// Render subcommand summaries.
64
70
pc , ok := cmd .(ParentCommand )
@@ -69,20 +75,16 @@ func renderHelp(cmd Command, fl *flag.FlagSet, w io.Writer) {
69
75
fmt .Fprint (w , "Commands:\n " )
70
76
}
71
77
72
- tw := tabwriter .NewWriter (w , 0 , 0 , 2 , ' ' , tabwriter .StripEscape )
73
78
for _ , cmd := range pc .Subcommands () {
74
79
if cmd .Spec ().Hidden {
75
80
continue
76
81
}
77
82
78
- // \xFF is used to escape the leading \t so tabwriter ignores it
79
83
fmt .Fprintf (tw ,
80
- " \xFF \t \xFF %v\t %v\n " ,
84
+ tabEscape + " \t " + tabEscape + " %v\t %v\n " ,
81
85
cmd .Spec ().Name ,
82
86
cmd .Spec ().ShortDesc (),
83
87
)
84
88
}
85
-
86
- tw .Flush ()
87
89
}
88
90
}
0 commit comments