cmd/tailscale/cli: make set's usage match up's, other than defaults
Fixes
@@ -297,55 +297,14 @@ func strSliceContains(ss []string, s string) bool {
// usageFuncNoDefaultValues is like usageFunc but doesn't print default values.
func usageFuncNoDefaultValues(c *ffcli.Command) string {
- var b strings.Builder
-
- fmt.Fprintf(&b, "USAGE\n")
- if c.ShortUsage != "" {
- fmt.Fprintf(&b, " %s\n", c.ShortUsage)
- } else {
- fmt.Fprintf(&b, " %s\n", c.Name)
- }
- fmt.Fprintf(&b, "\n")
-
- if c.LongHelp != "" {
- fmt.Fprintf(&b, "%s\n\n", c.LongHelp)
- }
-
- if len(c.Subcommands) > 0 {
- fmt.Fprintf(&b, "SUBCOMMANDS\n")
- tw := tabwriter.NewWriter(&b, 0, 2, 2, ' ', 0)
- for _, subcommand := range c.Subcommands {
- fmt.Fprintf(tw, " %s\t%s\n", subcommand.Name, subcommand.ShortHelp)
- }
- tw.Flush()
- fmt.Fprintf(&b, "\n")
- }
-
- if countFlags(c.FlagSet) > 0 {
- fmt.Fprintf(&b, "FLAGS\n")
- tw := tabwriter.NewWriter(&b, 0, 2, 2, ' ', 0)
- c.FlagSet.VisitAll(func(f *flag.Flag) {
- var s string
- name, usage := flag.UnquoteUsage(f)
- s = fmt.Sprintf(" --%s", f.Name) // Two spaces before --; see next two comments.
- if len(name) > 0 {
- s += " " + name
+ return usageFuncOpt(c, false)
}
- // Four spaces before the tab triggers good alignment
- // for both 4- and 8-space tab stops.
- s += "\n \t"
- s += strings.ReplaceAll(usage, "\n", "\n \t")
- fmt.Fprintln(&b, s)
- })
- tw.Flush()
- fmt.Fprintf(&b, "\n")
- }
-
- return strings.TrimSpace(b.String())
+func usageFunc(c *ffcli.Command) string {
+ return usageFuncOpt(c, true)
}
-func usageFunc(c *ffcli.Command) string {
+func usageFuncOpt(c *ffcli.Command, withDefaults bool) string {
var b strings.Builder
fmt.Fprintf(&b, "USAGE\n")
@@ -389,7 +348,7 @@ func usageFunc(c *ffcli.Command) string {
s += "\n \t"
s += strings.ReplaceAll(usage, "\n", "\n \t")
- if f.DefValue != "" {
+ if f.DefValue != "" && withDefaults {
s += fmt.Sprintf(" (default %s)", f.DefValue)
}
