From 7d66adbc8a9e0cc79b88527d9d29a756709853ae Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Wed, 6 May 2026 11:01:57 +0300 Subject: [PATCH 1/5] Make missing plugin repo errors more informative --- internal/config/plugin_installer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/config/plugin_installer.go b/internal/config/plugin_installer.go index ea14e42b44..8df40a6cd7 100644 --- a/internal/config/plugin_installer.go +++ b/internal/config/plugin_installer.go @@ -159,7 +159,7 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages { var plugins PluginPackages if err := decoder.Decode(&plugins); err != nil { - fmt.Fprintln(out, "Failed to decode repository data:\n", err) + fmt.Fprintln(out, "Failed to decode repository data [", pr, "]:\n", err) return PluginPackages{} } if len(plugins) > 0 { From b0d9a76dd0803868c6311f931654a1d31f88e695 Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Wed, 6 May 2026 12:42:59 +0300 Subject: [PATCH 2/5] Make missing plugin repo errors more informative --- internal/config/plugin_installer.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/internal/config/plugin_installer.go b/internal/config/plugin_installer.go index 8df40a6cd7..435baec67a 100644 --- a/internal/config/plugin_installer.go +++ b/internal/config/plugin_installer.go @@ -155,6 +155,22 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages { return PluginPackages{} } defer resp.Body.Close() + + // Handle cases when plugin repo is not available + statusCode := resp.StatusCode + if statusCode == http.StatusForbidden { + fmt.Fprintf(out, "Skipped: Access to plugin repository at %s is forbidden (Status Code: %d).\n", pr, statusCode) + return PluginPackages{} + } + if statusCode == http.StatusNotFound { + fmt.Fprintf(out, "Skipped: Plugin repository not found at %s (Status Code: %d).\n", pr, statusCode) + return PluginPackages{} + } + if statusCode != http.StatusOK { + fmt.Fprintf(out, "Skipped: Unexpected status code %d from plugin repository at %s.\n", statusCode, pr) + return PluginPackages{} + } + decoder := json5.NewDecoder(resp.Body) var plugins PluginPackages From 905d1927f185f33b25e0e386309904529d1c4287 Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Wed, 6 May 2026 22:18:32 +0300 Subject: [PATCH 3/5] Better message formatting --- internal/config/plugin_installer.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/config/plugin_installer.go b/internal/config/plugin_installer.go index 435baec67a..369bf3b77b 100644 --- a/internal/config/plugin_installer.go +++ b/internal/config/plugin_installer.go @@ -159,15 +159,18 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages { // Handle cases when plugin repo is not available statusCode := resp.StatusCode if statusCode == http.StatusForbidden { - fmt.Fprintf(out, "Skipped: Access to plugin repository at %s is forbidden (Status Code: %d).\n", pr, statusCode) + fmt.Fprintf(out, "Skipped: %s\n", pr) + fmt.Fprintf(out, " Reason: Access to plugin repository is forbidden (Status Code: %d)\n", statusCode) return PluginPackages{} } if statusCode == http.StatusNotFound { - fmt.Fprintf(out, "Skipped: Plugin repository not found at %s (Status Code: %d).\n", pr, statusCode) + fmt.Fprintf(out, "Skipped: %s\n", pr) + fmt.Fprintf(out, " Reason: Plugin repository not found (Status Code: %d)\n", statusCode) return PluginPackages{} } if statusCode != http.StatusOK { - fmt.Fprintf(out, "Skipped: Unexpected status code %d from plugin repository at %s.\n", statusCode, pr) + fmt.Fprintf(out, "Skipped: %s\n", pr) + fmt.Fprintf(out, " Reason: Unexpected status (Status Code: %d)\n", statusCode) return PluginPackages{} } From ec7d32d6cb1f3a16a407bebe5030126c09442d8b Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Thu, 7 May 2026 21:25:18 +0300 Subject: [PATCH 4/5] Better message formatting --- internal/config/plugin_installer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/config/plugin_installer.go b/internal/config/plugin_installer.go index 369bf3b77b..cfbc42e69e 100644 --- a/internal/config/plugin_installer.go +++ b/internal/config/plugin_installer.go @@ -178,7 +178,8 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages { var plugins PluginPackages if err := decoder.Decode(&plugins); err != nil { - fmt.Fprintln(out, "Failed to decode repository data [", pr, "]:\n", err) + fmt.Fprintf(out, "Skipped: %s\n", pr) + fmt.Fprintf(out, " Reason: Failed to decode repository data\n %s\n", err) return PluginPackages{} } if len(plugins) > 0 { From 596c78d5ae87f1874d94510fc1926128964cfc19 Mon Sep 17 00:00:00 2001 From: Dmytro Voytko Date: Fri, 8 May 2026 17:54:09 +0300 Subject: [PATCH 5/5] Better message formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jöran Karl <3951388+JoeKar@users.noreply.github.com> --- internal/config/plugin_installer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/config/plugin_installer.go b/internal/config/plugin_installer.go index cfbc42e69e..d6f7e2c901 100644 --- a/internal/config/plugin_installer.go +++ b/internal/config/plugin_installer.go @@ -179,7 +179,8 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages { var plugins PluginPackages if err := decoder.Decode(&plugins); err != nil { fmt.Fprintf(out, "Skipped: %s\n", pr) - fmt.Fprintf(out, " Reason: Failed to decode repository data\n %s\n", err) + fmt.Fprintf(out, " Reason: Failed to decode repository data:\n") + fmt.Fprintf(out, " %s\n", err) return PluginPackages{} } if len(plugins) > 0 {