|
|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|
// 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()) |
|
|
|
|
return usageFuncOpt(c, false) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func usageFunc(c *ffcli.Command) string { |
|
|
|
|
return usageFuncOpt(c, true) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|