diff --git a/commands/cli/parse.go b/commands/cli/parse.go index bd37419155e6ff70f6235ff2a409a0672a529574..ba57880cb9794c0be1a7bfc2af546a5db32a4456 100644 --- a/commands/cli/parse.go +++ b/commands/cli/parse.go @@ -13,7 +13,12 @@ func Parse(input []string, root *commands.Command) ([]string, []string, map[stri return nil, nil, nil, err } - opts, args, err := parseOptions(input, path, root) + options, err := root.GetOptions(path) + if err != nil { + return nil, nil, nil, err + } + + opts, args, err := parseOptions(input, options) if err != nil { return nil, nil, nil, err } @@ -44,12 +49,7 @@ func parsePath(input []string, root *commands.Command) ([]string, []string, erro // parseOptions parses the raw string values of the given options // returns the parsed options as strings, along with the CLI args -func parseOptions(input, path []string, root *commands.Command) (map[string]string, []string, error) { - options, err := root.GetOptions(path) - if err != nil { - return nil, nil, err - } - +func parseOptions(input []string, options map[string]commands.Option) (map[string]string, []string, error) { opts := make(map[string]string) args := make([]string, 0) diff --git a/commands/cli/parse_test.go b/commands/cli/parse_test.go index 247ca3d1e62d6de0c3a4fbcbeb6a992d5bb431b5..f9f7f7072167792269c06b60f3d76560c6e425c6 100644 --- a/commands/cli/parse_test.go +++ b/commands/cli/parse_test.go @@ -15,8 +15,13 @@ func TestOptionParsing(t *testing.T) { } cmd.Register("test", &commands.Command{}) - opts, input, err := parseOptions([]string{ "--beep", "--boop=5 lol", "test2", "-cVb", "beep" }, - []string{"test"}, cmd) + path := []string{"test"} + options, err := cmd.GetOptions(path) + if err != nil { + t.Error(err) + } + + opts, input, err := parseOptions([]string{ "--beep", "--boop=5 lol", "test2", "-cVb", "beep" }, options) /*for k, v := range opts { fmt.Printf("%s: %s\n", k, v) }