From 48c108d523f591db3224e45a8b8370870eadd00a Mon Sep 17 00:00:00 2001 From: Matt Bell Date: Tue, 4 Nov 2014 18:55:59 -0800 Subject: [PATCH] commands/cli: Made Parse return the resolved subcommand, even on error --- commands/cli/parse.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/commands/cli/parse.go b/commands/cli/parse.go index 0f6751c20..2a7be8341 100644 --- a/commands/cli/parse.go +++ b/commands/cli/parse.go @@ -11,7 +11,7 @@ import ( // Parse parses the input commandline string (cmd, flags, and args). // returns the corresponding command Request object. -func Parse(input []string, roots ...*cmds.Command) (cmds.Request, *cmds.Command, error) { +func Parse(input []string, roots ...*cmds.Command) (cmds.Request, *cmds.Command, *cmds.Command, error) { var root, cmd *cmds.Command var path, stringArgs []string var opts map[string]interface{} @@ -22,7 +22,7 @@ func Parse(input []string, roots ...*cmds.Command) (cmds.Request, *cmds.Command, p, i, c := parsePath(input, r) o, s, err := parseOptions(i) if err != nil { - return nil, nil, err + return nil, root, c, err } length := len(p) @@ -37,22 +37,22 @@ func Parse(input []string, roots ...*cmds.Command) (cmds.Request, *cmds.Command, } if maxLength == 0 { - return nil, nil, errors.New("Not a valid subcommand") + return nil, root, nil, errors.New("Not a valid subcommand") } args, err := parseArgs(stringArgs, cmd) if err != nil { - return nil, nil, err + return nil, root, cmd, err } req := cmds.NewRequest(path, opts, args, cmd) err = cmd.CheckArguments(req) if err != nil { - return nil, nil, err + return nil, root, cmd, err } - return req, root, nil + return req, root, cmd, nil } // parsePath separates the command path and the opts and args from a command string