Skip to content

Commit 091421f

Browse files
committed
cli-plugins/manager: getPluginDirs: remove redundant error-return
This function returned an error (if any) from [config.Path]. However, the only situation in which an error could be returned was if the given path to append to `config.Dir` was outside of the config directory. This can only happen if the path to append would try to traverse directories (e.g., passing `../../cli-plugins`). Given that we're passing a hard-coded value, that would not be the case, so we can simplify the code to join the path directly, and don't have to handle errors. [config.Path]: https://github.com/docker/cli/blob/2d74733942be353bc7730c8722ae2414f368b732/cli/config/config.go#L100-L107 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent d1a19d4 commit 091421f

3 files changed

Lines changed: 10 additions & 31 deletions

File tree

cli-plugins/manager/hooks.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,7 @@ func invokeAndCollectHooks(ctx context.Context, cfg *configfile.ConfigFile, root
6464
return nil
6565
}
6666

67-
pluginDirs, err := getPluginDirs(cfg)
68-
if err != nil {
69-
return nil
70-
}
67+
pluginDirs := getPluginDirs(cfg)
7168
nextSteps := make([]string, 0, len(pluginsCfg))
7269
for pluginName, pluginCfg := range pluginsCfg {
7370
match, ok := pluginMatch(pluginCfg, subCmdStr)

cli-plugins/manager/manager.go

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,16 @@ func IsNotFound(err error) bool {
6161
// 3. Platform-specific defaultSystemPluginDirs.
6262
//
6363
// [ConfigFile.CLIPluginsExtraDirs]: https://pkg.go.dev/github.com/docker/cli@v26.1.4+incompatible/cli/config/configfile#ConfigFile.CLIPluginsExtraDirs
64-
func getPluginDirs(cfg *configfile.ConfigFile) ([]string, error) {
64+
func getPluginDirs(cfg *configfile.ConfigFile) []string {
6565
var pluginDirs []string
6666

6767
if cfg != nil {
6868
pluginDirs = append(pluginDirs, cfg.CLIPluginsExtraDirs...)
6969
}
70-
pluginDir, err := config.Path("cli-plugins")
71-
if err != nil {
72-
return nil, err
73-
}
74-
70+
pluginDir := filepath.Join(config.Dir(), "cli-plugins")
7571
pluginDirs = append(pluginDirs, pluginDir)
7672
pluginDirs = append(pluginDirs, defaultSystemPluginDirs...)
77-
return pluginDirs, nil
73+
return pluginDirs
7874
}
7975

8076
func addPluginCandidatesFromDir(res map[string][]string, d string) {
@@ -116,10 +112,7 @@ func listPluginCandidates(dirs []string) map[string][]string {
116112

117113
// GetPlugin returns a plugin on the system by its name
118114
func GetPlugin(name string, dockerCLI config.Provider, rootcmd *cobra.Command) (*Plugin, error) {
119-
pluginDirs, err := getPluginDirs(dockerCLI.ConfigFile())
120-
if err != nil {
121-
return nil, err
122-
}
115+
pluginDirs := getPluginDirs(dockerCLI.ConfigFile())
123116
return getPlugin(name, pluginDirs, rootcmd)
124117
}
125118

@@ -145,11 +138,7 @@ func getPlugin(name string, pluginDirs []string, rootcmd *cobra.Command) (*Plugi
145138

146139
// ListPlugins produces a list of the plugins available on the system
147140
func ListPlugins(dockerCli config.Provider, rootcmd *cobra.Command) ([]Plugin, error) {
148-
pluginDirs, err := getPluginDirs(dockerCli.ConfigFile())
149-
if err != nil {
150-
return nil, err
151-
}
152-
141+
pluginDirs := getPluginDirs(dockerCli.ConfigFile())
153142
candidates := listPluginCandidates(pluginDirs)
154143
if len(candidates) == 0 {
155144
return nil, nil
@@ -210,10 +199,7 @@ func PluginRunCommand(dockerCli config.Provider, name string, rootcmd *cobra.Com
210199
return nil, errPluginNotFound(name)
211200
}
212201
exename := addExeSuffix(metadata.NamePrefix + name)
213-
pluginDirs, err := getPluginDirs(dockerCli.ConfigFile())
214-
if err != nil {
215-
return nil, err
216-
}
202+
pluginDirs := getPluginDirs(dockerCli.ConfigFile())
217203

218204
for _, d := range pluginDirs {
219205
path := filepath.Join(d, exename)

cli-plugins/manager/manager_test.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,11 @@ func TestErrPluginNotFound(t *testing.T) {
173173
func TestGetPluginDirs(t *testing.T) {
174174
cli := test.NewFakeCli(nil)
175175

176-
pluginDir, err := config.Path("cli-plugins")
177-
assert.NilError(t, err)
176+
pluginDir := filepath.Join(config.Dir(), "cli-plugins")
178177
expected := append([]string{pluginDir}, defaultSystemPluginDirs...)
179178

180-
var pluginDirs []string
181-
pluginDirs, err = getPluginDirs(cli.ConfigFile())
179+
pluginDirs := getPluginDirs(cli.ConfigFile())
182180
assert.Equal(t, strings.Join(expected, ":"), strings.Join(pluginDirs, ":"))
183-
assert.NilError(t, err)
184181

185182
extras := []string{
186183
"foo", "bar", "baz",
@@ -189,7 +186,6 @@ func TestGetPluginDirs(t *testing.T) {
189186
cli.SetConfigFile(&configfile.ConfigFile{
190187
CLIPluginsExtraDirs: extras,
191188
})
192-
pluginDirs, err = getPluginDirs(cli.ConfigFile())
189+
pluginDirs = getPluginDirs(cli.ConfigFile())
193190
assert.DeepEqual(t, expected, pluginDirs)
194-
assert.NilError(t, err)
195191
}

0 commit comments

Comments
 (0)