From 86bc450b20b190ece2d29d39bc4a499bee38939b Mon Sep 17 00:00:00 2001 From: Matt Bell Date: Tue, 14 Oct 2014 15:46:49 -0700 Subject: [PATCH] commands/cli: Pass option definitions as an argument to parseOptions --- commands/cli/parse.go | 14 +++++++------- commands/cli/parse_test.go | 9 +++++++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/commands/cli/parse.go b/commands/cli/parse.go index bd3741915..ba57880cb 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 247ca3d1e..f9f7f7072 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) }