1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-08-06 19:44:01 +08:00

commands/cli: Don't return root in Parse

This commit is contained in:
Matt Bell
2014-11-12 20:52:16 -08:00
committed by Juan Batiz-Benet
parent b7b15b8b30
commit 9afb85714a
2 changed files with 8 additions and 10 deletions

View File

@ -160,7 +160,7 @@ func (i *cmdInvocation) Run() (output io.Reader, err error) {
func (i *cmdInvocation) Parse(args []string) error { func (i *cmdInvocation) Parse(args []string) error {
var err error var err error
i.req, i.root, i.cmd, i.path, err = cmdsCli.Parse(args, Root) i.req, i.cmd, i.path, err = cmdsCli.Parse(args, Root)
if err != nil { if err != nil {
return err return err
} }

View File

@ -15,38 +15,36 @@ var ErrInvalidSubcmd = errors.New("subcommand not found")
// Parse parses the input commandline string (cmd, flags, and args). // Parse parses the input commandline string (cmd, flags, and args).
// returns the corresponding command Request object. // returns the corresponding command Request object.
// Parse will search each root to find the one that best matches the requested subcommand. // Parse will search each root to find the one that best matches the requested subcommand.
// TODO: get rid of extraneous return values (e.g. we ended up not needing the root value anymore) func Parse(input []string, root *cmds.Command) (cmds.Request, *cmds.Command, []string, error) {
// TODO: get rid of multiple-root support, we should only need one now
func Parse(input []string, root *cmds.Command) (cmds.Request, *cmds.Command, *cmds.Command, []string, error) {
// use the root that matches the longest path (most accurately matches request) // use the root that matches the longest path (most accurately matches request)
path, input, cmd := parsePath(input, root) path, input, cmd := parsePath(input, root)
opts, stringArgs, err := parseOptions(input) opts, stringArgs, err := parseOptions(input)
if err != nil { if err != nil {
return nil, root, cmd, path, err return nil, cmd, path, err
} }
if len(path) == 0 { if len(path) == 0 {
return nil, root, nil, path, ErrInvalidSubcmd return nil, nil, path, ErrInvalidSubcmd
} }
args, err := parseArgs(stringArgs, cmd) args, err := parseArgs(stringArgs, cmd)
if err != nil { if err != nil {
return nil, root, cmd, path, err return nil, cmd, path, err
} }
optDefs, err := root.GetOptions(path) optDefs, err := root.GetOptions(path)
if err != nil { if err != nil {
return nil, root, cmd, path, err return nil, cmd, path, err
} }
req := cmds.NewRequest(path, opts, args, cmd, optDefs) req := cmds.NewRequest(path, opts, args, cmd, optDefs)
err = cmd.CheckArguments(req) err = cmd.CheckArguments(req)
if err != nil { if err != nil {
return req, root, cmd, path, err return req, cmd, path, err
} }
return req, root, cmd, path, nil return req, cmd, path, nil
} }
// parsePath separates the command path and the opts and args from a command string // parsePath separates the command path and the opts and args from a command string