|
|
|
@ -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)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|