2023-08-13 17:45:33 +01:00
|
|
|
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
|
|
|
|
|
2023-08-20 06:14:10 +01:00
|
|
|
fmt.Fprintf(&b, "SUMMARY:\n %s - %s\n\nUSAGE:\n spruce %s [flags]\n\nFLAGS:", name, summary, name)
|
2023-08-13 17:45:33 +01:00
|
|
|
|
|
|
|
flagset.VisitAll(func(f *flag.Flag) {
|
2023-08-20 06:14:10 +01:00
|
|
|
fmt.Fprintf(&b, "\n -%s, --%s\n %s", f.Name, f.Name, f.Usage)
|
2023-08-13 17:45:33 +01:00
|
|
|
})
|
|
|
|
|
2023-08-20 06:14:10 +01:00
|
|
|
b.WriteString("\n")
|
|
|
|
|
|
|
|
w := flag.CommandLine.Output()
|
|
|
|
|
2023-08-13 17:45:33 +01:00
|
|
|
fmt.Fprint(w, b.String())
|
|
|
|
}
|
|
|
|
}
|