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