mirror of
https://github.com/helm/helm.git
synced 2026-04-21 06:06:56 -04:00
Merge pull request #31427 from tisonkun/resolve-todo
Check plugin name is not used
This commit is contained in:
commit
2e2cb05855
7 changed files with 16 additions and 10 deletions
|
|
@ -132,7 +132,13 @@ func loadCLIPlugins(baseCmd *cobra.Command, out io.Writer) {
|
|||
DisableFlagParsing: true,
|
||||
}
|
||||
|
||||
// TODO: Make sure a command with this name does not already exist.
|
||||
for _, cmd := range baseCmd.Commands() {
|
||||
if cmd.Name() == c.Name() {
|
||||
slog.Error("failed to load plugins: name conflicts", slog.String("name", c.Name()))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
baseCmd.AddCommand(c)
|
||||
|
||||
// For completion, we try to load more details about the plugins so as to allow for command and
|
||||
|
|
|
|||
|
|
@ -114,9 +114,9 @@ func TestLoadCLIPlugins(t *testing.T) {
|
|||
}{
|
||||
{"args", "echo args", "This echos args", "-a -b -c\n", []string{"-a", "-b", "-c"}, 0},
|
||||
{"echo", "echo stuff", "This echos stuff", "hello\n", []string{}, 0},
|
||||
{"env", "env stuff", "show the env", "HELM_PLUGIN_NAME=env\n", []string{}, 0},
|
||||
{"exitwith", "exitwith code", "This exits with the specified exit code", "", []string{"2"}, 2},
|
||||
{"fullenv", "show env vars", "show all env vars", fullEnvOutput, []string{}, 0},
|
||||
{"shortenv", "env stuff", "show the env", "HELM_PLUGIN_NAME=shortenv\n", []string{}, 0},
|
||||
}
|
||||
|
||||
pluginCmds := cmd.Commands()
|
||||
|
|
@ -254,10 +254,6 @@ func TestLoadCLIPluginsForCompletion(t *testing.T) {
|
|||
tests := []staticCompletionDetails{
|
||||
{"args", []string{}, []string{}, []staticCompletionDetails{}},
|
||||
{"echo", []string{}, []string{}, []staticCompletionDetails{}},
|
||||
{"env", []string{}, []string{"global"}, []staticCompletionDetails{
|
||||
{"list", []string{}, []string{"a", "all", "log"}, []staticCompletionDetails{}},
|
||||
{"remove", []string{"all", "one"}, []string{}, []staticCompletionDetails{}},
|
||||
}},
|
||||
{"exitwith", []string{}, []string{}, []staticCompletionDetails{
|
||||
{"code", []string{}, []string{"a", "b"}, []staticCompletionDetails{}},
|
||||
}},
|
||||
|
|
@ -268,6 +264,10 @@ func TestLoadCLIPluginsForCompletion(t *testing.T) {
|
|||
{"more", []string{"one", "two"}, []string{"b", "ball"}, []staticCompletionDetails{}},
|
||||
}},
|
||||
}},
|
||||
{"shortenv", []string{}, []string{"global"}, []staticCompletionDetails{
|
||||
{"list", []string{}, []string{"a", "all", "log"}, []staticCompletionDetails{}},
|
||||
{"remove", []string{"all", "one"}, []string{}, []staticCompletionDetails{}},
|
||||
}},
|
||||
}
|
||||
checkCommand(t, cmd.Commands(), tests)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
name: env
|
||||
name: shortenv
|
||||
commands:
|
||||
- name: list
|
||||
flags:
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
name: env
|
||||
name: shortenv
|
||||
type: cli/v1
|
||||
runtime: subprocess
|
||||
config:
|
||||
2
pkg/cmd/testdata/output/plugin_list_comp.txt
vendored
2
pkg/cmd/testdata/output/plugin_list_comp.txt
vendored
|
|
@ -1,7 +1,7 @@
|
|||
args echo args
|
||||
echo echo stuff
|
||||
env env stuff
|
||||
exitwith exitwith code
|
||||
fullenv show env vars
|
||||
shortenv env stuff
|
||||
:4
|
||||
Completion ended with directive: ShellCompDirectiveNoFileComp
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
echo echo stuff
|
||||
env env stuff
|
||||
exitwith exitwith code
|
||||
fullenv show env vars
|
||||
shortenv env stuff
|
||||
:4
|
||||
Completion ended with directive: ShellCompDirectiveNoFileComp
|
||||
|
|
|
|||
Loading…
Reference in a new issue