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:

committed by
Juan Batiz-Benet

parent
b7b15b8b30
commit
9afb85714a
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user