Compare commits

...

2 Commits

Author SHA1 Message Date
518e304948
Add support for nil flag sets 2021-03-03 23:31:27 -06:00
78c7572139
Use parentheses 2021-03-03 00:29:40 -06:00
4 changed files with 25 additions and 24 deletions

View File

@ -12,14 +12,14 @@ else
endif
LUME_VERSION ?= $(shell git describe --tags --always)
LDFLAGS := ${LDFLAGS} \
-X git.kill0.net/chill9/lume/cmd.Version=${LUME_VERSION} \
-X git.kill0.net/chill9/lume/cmd.BuildDate=${BUILD_DATE}
LDFLAGS := $(LDFLAGS) \
-X git.kill0.net/chill9/lume/cmd.Version=$(LUME_VERSION) \
-X git.kill0.net/chill9/lume/cmd.BuildDate=$(BUILD_DATE)
.PHONY: build
build:
$(Q) go build -o ${EXE} -ldflags="${LDFLAGS}" ./cmd/lume
$(Q) go build -o $(EXE) -ldflags="$(LDFLAGS)" ./cmd/lume
.PHONY: clean
clean:
${RM} ${EXE}
$(RM) $(EXE)

View File

@ -21,6 +21,7 @@ type Config struct {
type CmdArgs struct {
Flags Flags
Args []string
Client *lifx.Client
Config Config
Name string

View File

@ -1,32 +1,24 @@
package lumecmd
import (
"flag"
"fmt"
"sort"
)
func NewCmdHelp() Command {
return Command{
Name: "help",
Func: HelpCmd,
Flags: func() *flag.FlagSet {
fs := flag.NewFlagSet("help", flag.ExitOnError)
return fs
}(),
Name: "help",
Func: HelpCmd,
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)
}
fmt.Print("flags:\n")
subCmd.Flags.PrintDefaults()
if subCmd.Flags != nil {
fmt.Println()
fmt.Print("flags:\n")
subCmd.Flags.PrintDefaults()
}
return nil
}

View File

@ -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:])
cmdArgs.Flags = Flags{FlagSet: fs}
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)