diff --git a/pkg/core/provider.go b/pkg/core/provider.go index 0fd7964f4693d8..7a3069d7e19762 100644 --- a/pkg/core/provider.go +++ b/pkg/core/provider.go @@ -114,3 +114,14 @@ func CheckAvailableUpdates(ctx context.Context, reg registry.Registry, opts *Che } return updates, diags } + +// ManagedProviders returns list of providers which are not in reattach mode +func ManagedProviders(pm *plugin.Manager, provs []registry.Provider) []registry.Provider { + ret := make([]registry.Provider, 0, len(provs)) + for i := range provs { + if !pm.IsReattachProvider(provs[i]) { + ret = append(ret, provs[i]) + } + } + return ret +} diff --git a/pkg/plugin/manager.go b/pkg/plugin/manager.go index f9f6564f9f3692..f77959cf6cf64c 100644 --- a/pkg/plugin/manager.go +++ b/pkg/plugin/manager.go @@ -66,7 +66,7 @@ func (m *Manager) DownloadProviders(ctx context.Context, providers []registry.Pr log.Debug().Interface("providers", providers).Msg("Downloading required providers") downloaded := make([]registry.ProviderBinary, len(providers)) for i, rp := range providers { - if _, ok := m.clients[rp.Name]; ok { + if m.IsReattachProvider(rp) { ui.ColorizedOutput(ui.ColorInfo, fmt.Sprintf("Skipping provider %s download, using reattach instead\n", ui.Colorize(ui.ColorSuccessBold, false, rp.Name))) continue } @@ -126,6 +126,11 @@ func (m *Manager) ClosePlugin(p Plugin) { } } +func (m *Manager) IsReattachProvider(rp registry.Provider) bool { + _, ok := m.clients[rp.Name] + return ok +} + func (m *Manager) reattachProviders() error { // used primarily by the SDK's acceptance testing framework. unmanagedProviders, err := serve.ParseReattachProviders(viper.GetString("reattach-providers")) diff --git a/pkg/ui/console/client.go b/pkg/ui/console/client.go index 32e120383cf1c2..bb1aded4ffa324 100644 --- a/pkg/ui/console/client.go +++ b/pkg/ui/console/client.go @@ -178,7 +178,10 @@ func (c Client) DownloadProviders(ctx context.Context) (diags diag.Diagnostics) ui.ColorizedOutput(ui.ColorProgress, "Finished provider initialization...\n\n") ui.ColorizedOutput(ui.ColorProgress, "Checking available provider updates...\n\n") - updates, dd := core.CheckAvailableUpdates(ctx, c.Registry, &core.CheckUpdatesOptions{Providers: c.Providers}) + checkUpdateOpts := core.CheckUpdatesOptions{ + Providers: core.ManagedProviders(c.PluginManager, c.Providers), + } + updates, dd := core.CheckAvailableUpdates(ctx, c.Registry, &checkUpdateOpts) if dd.HasErrors() { return diags.Add(dd) } diff --git a/pkg/ui/output.go b/pkg/ui/output.go index b9715ee593652f..007feeb4c4ea7b 100644 --- a/pkg/ui/output.go +++ b/pkg/ui/output.go @@ -96,5 +96,5 @@ func strip(str string) string { for _, s := range emojiStatus { str = strings.ReplaceAll(str, s, "") } - return strings.TrimSuffix(strings.TrimSpace(removeAnsi.ReplaceAllString(str, "")), ".") + return strings.TrimRight(strings.TrimSpace(removeAnsi.ReplaceAllString(str, "")), ".") }