Dan Anglin
4f90a4c8bb
Use the default FlagSet to parse all the arguments and to set the default help message for spruce. Arguments set after the subcommand are still parsed by the subcommand's FlagSet. The summaries for all subcommand are defined in one place in the main function for consistency. The internal/cmd.SpruceUsage function is replaced with the spruceUsageFunc function in the main package which returns the usage function which is set as the default usage function. The format of the help message for spruce and the subcommands have been updated with the inspiration of the help message from gopass.
31 lines
553 B
Go
31 lines
553 B
Go
package cmd
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Runner interface {
|
|
Parse([]string) error
|
|
Name() string
|
|
Run() error
|
|
}
|
|
|
|
func usageFunc(name, summary string, flagset *flag.FlagSet) func() {
|
|
return func() {
|
|
var b strings.Builder
|
|
|
|
fmt.Fprintf(&b, "SUMMARY:\n %s - %s\n\nUSAGE:\n spruce %s [flags]\n\nFLAGS:", name, summary, name)
|
|
|
|
flagset.VisitAll(func(f *flag.Flag) {
|
|
fmt.Fprintf(&b, "\n -%s, --%s\n %s", f.Name, f.Name, f.Usage)
|
|
})
|
|
|
|
b.WriteString("\n")
|
|
|
|
w := flag.CommandLine.Output()
|
|
|
|
fmt.Fprint(w, b.String())
|
|
}
|
|
}
|