Add support for nil flag sets
This commit is contained in:
parent
78c7572139
commit
518e304948
@ -21,6 +21,7 @@ type Config struct {
|
||||
|
||||
type CmdArgs struct {
|
||||
Flags Flags
|
||||
Args []string
|
||||
Client *lifx.Client
|
||||
Config Config
|
||||
Name string
|
||||
|
20
cmd/help.go
20
cmd/help.go
@ -1,7 +1,6 @@
|
||||
package lumecmd
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"sort"
|
||||
)
|
||||
@ -10,23 +9,16 @@ func NewCmdHelp() Command {
|
||||
return Command{
|
||||
Name: "help",
|
||||
Func: HelpCmd,
|
||||
Flags: func() *flag.FlagSet {
|
||||
fs := flag.NewFlagSet("help", flag.ExitOnError)
|
||||
|
||||
return fs
|
||||
}(),
|
||||
Use: "<command>",
|
||||
Short: "Show help for a command",
|
||||
}
|
||||
}
|
||||
|
||||
func HelpCmd(args CmdArgs) (int, error) {
|
||||
argv := args.Flags.Args()
|
||||
|
||||
if len(argv) == 0 {
|
||||
if len(args.Args) == 0 {
|
||||
printHelp(commandRegistry)
|
||||
} else if len(argv) >= 1 {
|
||||
printCmdHelp(argv[0])
|
||||
} else if len(args.Args) >= 1 {
|
||||
printCmdHelp(args.Args[0])
|
||||
}
|
||||
|
||||
return ExitSuccess, nil
|
||||
@ -63,11 +55,15 @@ func printCmdHelp(name string) error {
|
||||
|
||||
if subCmd.Use != "" {
|
||||
fmt.Printf("usage:\n lume %s %s\n", subCmd.Name, subCmd.Use)
|
||||
fmt.Println()
|
||||
} else {
|
||||
fmt.Printf("usage:\n lume %s\n", subCmd.Name)
|
||||
}
|
||||
|
||||
if subCmd.Flags != nil {
|
||||
fmt.Println()
|
||||
fmt.Print("flags:\n")
|
||||
subCmd.Flags.PrintDefaults()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -74,6 +74,7 @@ func Main(args []string) (int, error) {
|
||||
cmdArgs := CmdArgs{
|
||||
Client: c,
|
||||
Config: config,
|
||||
Args: args[2:],
|
||||
}
|
||||
|
||||
cmd, ok := GetCommand(command)
|
||||
@ -81,11 +82,14 @@ func Main(args []string) (int, error) {
|
||||
err = fmt.Errorf("lume: '%s' is not lume command. See 'lume help'", command)
|
||||
return ExitFailure, err
|
||||
}
|
||||
fs := cmd.Flags
|
||||
fs.Parse(args[2:])
|
||||
|
||||
fs := cmd.Flags
|
||||
if fs != nil {
|
||||
fs.Parse(args[2:])
|
||||
cmdArgs.Flags = Flags{FlagSet: fs}
|
||||
}
|
||||
cmdArgs.Name = command
|
||||
|
||||
exitCode, err := cmd.Func(cmdArgs)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("fatal: %s", err)
|
||||
|
Loading…
Reference in New Issue
Block a user