Skip to content

Commit 68cde6f

Browse files
committed
feat: Add plugin directory environment variable expansion in cli-plugins/manager/manager.go
Signed-off-by: Paulchen <lukas.23022005@gmail.com>
1 parent 903e9b3 commit 68cde6f

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

cli-plugins/manager/manager.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,27 @@ func (e errPluginNotFound) Error() string {
4040
//
4141
// [ConfigFile.CLIPluginsExtraDirs]: https://pkg.go.dev/github.com/docker/cli@v26.1.4+incompatible/cli/config/configfile#ConfigFile.CLIPluginsExtraDirs
4242
func getPluginDirs(cfg *configfile.ConfigFile) []string {
43+
var configPluginDirs []string
4344
var pluginDirs []string
44-
4545
if cfg != nil {
46-
pluginDirs = append(pluginDirs, cfg.CLIPluginsExtraDirs...)
46+
configPluginDirs = append(configPluginDirs, cfg.CLIPluginsExtraDirs...)
4747
}
48+
pluginDirs = append(pluginDirs, expandEnvironmentVariablesInPluginDirString(configPluginDirs)...)
4849
pluginDir := filepath.Join(config.Dir(), "cli-plugins")
4950
pluginDirs = append(pluginDirs, pluginDir)
5051
pluginDirs = append(pluginDirs, defaultSystemPluginDirs...)
5152
return pluginDirs
5253
}
5354

55+
// Resolve statements like $HOME in plugin directory paths
56+
func expandEnvironmentVariablesInPluginDirString(pluginDirs []string) []string {
57+
var replacedPluginDirs []string
58+
for _, dir := range pluginDirs {
59+
replacedPluginDirs = append(replacedPluginDirs, os.ExpandEnv(dir))
60+
}
61+
return replacedPluginDirs
62+
}
63+
5464
func addPluginCandidatesFromDir(res map[string][]string, d string) {
5565
dentries, err := os.ReadDir(d)
5666
// Silently ignore any directories which we cannot list (e.g. due to

0 commit comments

Comments
 (0)