Skip to content
This repository was archived by the owner on Oct 17, 2021. It is now read-only.

Commit d3a506b

Browse files
committed
Render flag help to tabwriter
1 parent 9949b82 commit d3a506b

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

help.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ func fmtDefValue(value interface{}) string {
3333
}
3434
}
3535

36+
// \xFF is used to escape a \t so tabwriter ignores it.
37+
const tabEscape = "\xFF"
38+
3639
func renderFlagHelp(fl *flag.FlagSet, w io.Writer) {
3740
var count int
3841
fl.VisitAll(func(f *flag.Flag) {
@@ -42,9 +45,9 @@ func renderFlagHelp(fl *flag.FlagSet, w io.Writer) {
4245

4346
count++
4447
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)
4649
} 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)
4851
}
4952
})
5053
}
@@ -57,8 +60,11 @@ func renderHelp(cmd Command, fl *flag.FlagSet, w io.Writer) {
5760
)
5861
fmt.Fprintf(w, "%v\n", cmd.Spec().Desc)
5962

63+
tw := tabwriter.NewWriter(w, 0, 4, 2, ' ', tabwriter.StripEscape)
64+
defer tw.Flush()
65+
6066
// Render flag help.
61-
renderFlagHelp(fl, w)
67+
renderFlagHelp(fl, tw)
6268

6369
// Render subcommand summaries.
6470
pc, ok := cmd.(ParentCommand)
@@ -69,20 +75,16 @@ func renderHelp(cmd Command, fl *flag.FlagSet, w io.Writer) {
6975
fmt.Fprint(w, "Commands:\n")
7076
}
7177

72-
tw := tabwriter.NewWriter(w, 0, 0, 2, ' ', tabwriter.StripEscape)
7378
for _, cmd := range pc.Subcommands() {
7479
if cmd.Spec().Hidden {
7580
continue
7681
}
7782

78-
// \xFF is used to escape the leading \t so tabwriter ignores it
7983
fmt.Fprintf(tw,
80-
"\xFF\t\xFF%v\t%v\n",
84+
tabEscape+"\t"+tabEscape+"%v\t%v\n",
8185
cmd.Spec().Name,
8286
cmd.Spec().ShortDesc(),
8387
)
8488
}
85-
86-
tw.Flush()
8789
}
8890
}

0 commit comments

Comments
 (0)