From b1b04592a236a4dbeae463f8118412550e0df47f Mon Sep 17 00:00:00 2001 From: Suleiman Dibirov Date: Tue, 4 Nov 2025 07:17:15 +0200 Subject: [PATCH] Return error from FindPlugin and use Path from the installer Signed-off-by: Suleiman Dibirov --- internal/plugin/installer/http_installer.go | 2 +- internal/plugin/installer/local_installer.go | 2 +- internal/plugin/installer/oci_installer.go | 2 +- internal/plugin/installer/vcs_installer.go | 7 ++++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/internal/plugin/installer/http_installer.go b/internal/plugin/installer/http_installer.go index e42e2a439..a422bacfb 100644 --- a/internal/plugin/installer/http_installer.go +++ b/internal/plugin/installer/http_installer.go @@ -91,7 +91,7 @@ func (i *HTTPInstaller) Install() error { return fmt.Errorf("failed to extract plugin metadata from tarball: %w", err) } filename := fmt.Sprintf("%s-%s.tgz", metadata.Name, metadata.Version) - pluginsPath := helmpath.DataPath("plugins") + pluginsPath := filepath.Dir(i.Path()) foundPlugins, err := plugin.FindPlugins([]string{pluginsPath}, plugin.Descriptor{Name: metadata.Name}) if err != nil { return fmt.Errorf("failed to search for existing plugins: %w", err) diff --git a/internal/plugin/installer/local_installer.go b/internal/plugin/installer/local_installer.go index 1d05baaee..91d9c428b 100644 --- a/internal/plugin/installer/local_installer.go +++ b/internal/plugin/installer/local_installer.go @@ -133,7 +133,7 @@ func (i *LocalInstaller) installFromArchive() error { return fmt.Errorf("failed to extract plugin metadata from tarball: %w", err) } filename := fmt.Sprintf("%s-%s.tgz", metadata.Name, metadata.Version) - pluginsPath := helmpath.DataPath("plugins") + pluginsPath := filepath.Dir(i.Path()) foundPlugins, err := plugin.FindPlugins([]string{pluginsPath}, plugin.Descriptor{Name: metadata.Name}) if err != nil { return fmt.Errorf("failed to search for existing plugins: %w", err) diff --git a/internal/plugin/installer/oci_installer.go b/internal/plugin/installer/oci_installer.go index 51df15f61..94c0dd878 100644 --- a/internal/plugin/installer/oci_installer.go +++ b/internal/plugin/installer/oci_installer.go @@ -101,7 +101,7 @@ func (i *OCIInstaller) Install() error { return fmt.Errorf("failed to extract plugin metadata from tarball: %w", err) } filename := fmt.Sprintf("%s-%s.tgz", metadata.Name, metadata.Version) - pluginsPath := helmpath.DataPath("plugins") + pluginsPath := filepath.Dir(i.Path()) foundPlugins, err := plugin.FindPlugins([]string{pluginsPath}, plugin.Descriptor{Name: metadata.Name}) if err != nil { return fmt.Errorf("failed to search for existing plugins: %w", err) diff --git a/internal/plugin/installer/vcs_installer.go b/internal/plugin/installer/vcs_installer.go index 79b1faa6a..99f19e006 100644 --- a/internal/plugin/installer/vcs_installer.go +++ b/internal/plugin/installer/vcs_installer.go @@ -21,6 +21,7 @@ import ( stdfs "io/fs" "log/slog" "os" + "path/filepath" "sort" "github.com/Masterminds/semver/v3" @@ -100,7 +101,11 @@ func (i *VCSInstaller) Install() error { metadata := p.Metadata() // Check if a plugin with the same name already exists - foundPlugins, _ := plugin.FindPlugins([]string{i.PluginsDirectory}, plugin.Descriptor{Name: metadata.Name}) + pluginsPath := filepath.Dir(i.Path()) + foundPlugins, err := plugin.FindPlugins([]string{pluginsPath}, plugin.Descriptor{Name: metadata.Name}) + if err != nil { + return fmt.Errorf("failed to search for existing plugins: %w", err) + } if len(foundPlugins) > 0 { return fmt.Errorf("plugin %q already exists at %q", metadata.Name, foundPlugins[0].Dir()) }