diff --git a/pkg/plugin/installer/base.go b/pkg/plugin/installer/base.go index 3738246ee..66d7c5cac 100644 --- a/pkg/plugin/installer/base.go +++ b/pkg/plugin/installer/base.go @@ -29,11 +29,22 @@ type base struct { } func newBase(source string) base { - settings := cli.New() + pluginsDir := getPluginsDir() return base{ Source: source, - PluginsDirectory: settings.PluginsDirectory, + PluginsDirectory: pluginsDir, + } +} + +func getPluginsDir() string { + settings := cli.New() + + if settings.PluginsDirectory == "" { + return "" } + + pluginsDirs := filepath.SplitList(settings.PluginsDirectory) + return pluginsDirs[0] } // Path is where the plugin will be installed. diff --git a/pkg/plugin/installer/base_test.go b/pkg/plugin/installer/base_test.go index f4dd6d6be..47a90e136 100644 --- a/pkg/plugin/installer/base_test.go +++ b/pkg/plugin/installer/base_test.go @@ -14,6 +14,7 @@ limitations under the License. package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( + "fmt" "os" "testing" ) @@ -32,6 +33,10 @@ func TestPath(t *testing.T) { source: "https://github.com/jkroepke/helm-secrets", helmPluginsDir: "/helm/data/plugins", expectPath: "/helm/data/plugins/helm-secrets", + }, { + source: "https://github.com/jkroepke/helm-secrets", + helmPluginsDir: fmt.Sprintf("/helm/data/plugins%c/remote/helm/data/plugins", os.PathListSeparator), + expectPath: "/helm/data/plugins/helm-secrets", }, }