mirror of https://github.com/knative/client.git
do not check for plugin executable if none on path (#846)
This commit is contained in:
parent
b7fc4c3906
commit
834ee79049
|
|
@ -15,7 +15,6 @@
|
||||||
package plugin
|
package plugin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
@ -127,10 +126,11 @@ func HandlePluginCommand(pluginHandler PluginHandler, cmdArgs []string) error {
|
||||||
remainingArgs := []string{}
|
remainingArgs := []string{}
|
||||||
|
|
||||||
for idx := range cmdArgs {
|
for idx := range cmdArgs {
|
||||||
if strings.HasPrefix(cmdArgs[idx], "-") {
|
cmdArg := cmdArgs[idx]
|
||||||
|
if strings.HasPrefix(cmdArg, "-") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
remainingArgs = append(remainingArgs, strings.Replace(cmdArgs[idx], "-", "_", -1))
|
remainingArgs = append(remainingArgs, strings.Replace(cmdArg, "-", "_", -1))
|
||||||
}
|
}
|
||||||
|
|
||||||
foundBinaryPath := ""
|
foundBinaryPath := ""
|
||||||
|
|
@ -147,16 +147,14 @@ func HandlePluginCommand(pluginHandler PluginHandler, cmdArgs []string) error {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(foundBinaryPath) == 0 {
|
|
||||||
return errors.New("Could not find plugin to execute")
|
|
||||||
}
|
|
||||||
|
|
||||||
// invoke cmd binary relaying the current environment and args given
|
// invoke cmd binary relaying the current environment and args given
|
||||||
// remainingArgs will always have at least one element.
|
// remainingArgs will always have at least one element.
|
||||||
// execve will make remainingArgs[0] the "binary name".
|
// execve will make remainingArgs[0] the "binary name".
|
||||||
err := pluginHandler.Execute(foundBinaryPath, append([]string{foundBinaryPath}, cmdArgs[len(remainingArgs):]...), os.Environ())
|
if len(foundBinaryPath) != 0 {
|
||||||
if err != nil {
|
err := pluginHandler.Execute(foundBinaryPath, append([]string{foundBinaryPath}, cmdArgs[len(remainingArgs):]...), os.Environ())
|
||||||
return err
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,14 @@ func TestPluginHandler(t *testing.T) {
|
||||||
err = HandlePluginCommand(tPluginHandler, []string{"bogus"})
|
err = HandlePluginCommand(tPluginHandler, []string{"bogus"})
|
||||||
assert.Assert(t, err != nil, fmt.Sprintf("test plugin %s expected to fail executing", "bogus"))
|
assert.Assert(t, err != nil, fmt.Sprintf("test plugin %s expected to fail executing", "bogus"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("doesn't return error with -h", func(t *testing.T) {
|
||||||
|
setup(t)
|
||||||
|
defer cleanup(t)
|
||||||
|
|
||||||
|
err = HandlePluginCommand(tPluginHandler, []string{"source", "-h"})
|
||||||
|
assert.Assert(t, err == nil, fmt.Sprintf("test plugin command with -h failed executing: %s", err.Error()))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -403,7 +403,7 @@ func showSubcommands(cmd *cobra.Command, args []string, innerArg string) string
|
||||||
for _, subcmd := range cmd.Commands() {
|
for _, subcmd := range cmd.Commands() {
|
||||||
strs = append(strs, subcmd.Name())
|
strs = append(strs, subcmd.Name())
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("Error: unknown subcommand '%s' for '%s'. Available subcommands: %s\nRun 'kn --help' for usage.\n", innerArg, getCommands(args, innerArg), strings.Join(strs, ", "))
|
return fmt.Sprintf("Error: unknown subcommand '%s' for '%s'.\nAvailable subcommands: %s\nRun 'kn --help' for usage.\n", innerArg, getCommands(args, innerArg), strings.Join(strs, ", "))
|
||||||
}
|
}
|
||||||
|
|
||||||
func helpOptionsPresent(args []string) bool {
|
func helpOptionsPresent(args []string) bool {
|
||||||
|
|
|
||||||
|
|
@ -77,12 +77,11 @@ func TestWrongCommand(t *testing.T) {
|
||||||
r := test.NewKnRunResultCollector(t, it)
|
r := test.NewKnRunResultCollector(t, it)
|
||||||
defer r.DumpIfFailed()
|
defer r.DumpIfFailed()
|
||||||
|
|
||||||
out := test.Kn{}.Run("source", "apiserver", "noverb", "--tag=0.13")
|
out := test.Kn{}.Run("source", "apiserver", "noverb")
|
||||||
assert.Check(t, util.ContainsAll(out.Stderr, "Error", "unknown sub-command", "noverb"))
|
assert.Check(t, util.ContainsAll(out.Stderr, "unknown sub-command", "noverb"))
|
||||||
r.AssertError(out)
|
r.AssertError(out)
|
||||||
|
|
||||||
out = test.Kn{}.Run("rev")
|
out = test.Kn{}.Run("rev")
|
||||||
assert.Check(t, util.ContainsAll(out.Stderr, "unknown command", "rev"))
|
assert.Check(t, util.ContainsAll(out.Stderr, "unknown command", "rev", "revision"))
|
||||||
r.AssertError(out)
|
r.AssertError(out)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue