38 行
665 B
Go
38 行
665 B
Go
package cli
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
type GlobalOpts struct {
|
|
ConfigPath string
|
|
Debug bool
|
|
ConfigStanza string
|
|
}
|
|
|
|
func (o GlobalOpts) String() string {
|
|
return "--config --debug --account"
|
|
}
|
|
|
|
type Command interface {
|
|
Func([]string) error
|
|
Help(io.Writer, *flag.FlagSet)
|
|
}
|
|
|
|
type CommandMap map[string]Command
|
|
|
|
type ProgramInfo struct {
|
|
Name string
|
|
Opts GlobalOpts
|
|
Commands CommandMap
|
|
}
|
|
|
|
func Usage(w io.Writer, info ProgramInfo) {
|
|
fmt.Fprintf(w, "USAGE: %s [%s] SUBCOMMAND [subcommand opts]\n", info.Name, info.Opts)
|
|
fmt.Fprintf(w, "\nSUBCOMMANDS:\n")
|
|
for command := range info.Commands {
|
|
fmt.Fprintf(w, "\t%s\n", command)
|
|
}
|
|
}
|