Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion sdkexamples/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ func runInstall(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
installClient.KeyFile,
installClient.CaFile,
installClient.InsecureSkipTLSVerify,
installClient.PlainHTTP)
installClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
10 changes: 9 additions & 1 deletion sdkexamples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"context"
"fmt"
"log"
"log/slog"
"net/http"
"os"

Expand Down Expand Up @@ -42,7 +43,7 @@ func initActionConfigList(settings *cli.EnvSettings, logger *log.Logger, allName
return actionConfig, nil
}

func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile string, insecureSkipTLSVerify, plainHTTP bool) (*registry.Client, error) {
func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile string, insecureSkipTLSVerify, plainHTTP bool, logger *slog.Logger) (*registry.Client, error) {

opts := []registry.ClientOption{
registry.ClientOptDebug(settings.Debug),
Expand All @@ -55,6 +56,13 @@ func newRegistryClient(settings *cli.EnvSettings, certFile, keyFile, caFile stri
opts = append(opts, registry.ClientOptPlainHTTP())
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added registry.ClientOptLogger documentation based on PR #31833, which introduces this new option to allow SDK users to inject custom *slog.Logger instances rather than relying on global slog state.

Source: helm/helm#31833


// Inject a custom structured logger for diagnostic messages.
// This prevents Helm from mutating global process state, which is
// important when embedding Helm as a library.
if logger != nil {
opts = append(opts, registry.ClientOptLogger(logger))
}

if certFile != "" && keyFile != "" || caFile != "" || insecureSkipTLSVerify {
tlsConf, err := NewTLSConfig(
WithInsecureSkipVerify(insecureSkipTLSVerify),
Expand Down
3 changes: 2 additions & 1 deletion sdkexamples/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ func runPull(logger *log.Logger, settings *cli.EnvSettings, chartRef, chartVersi
pullClient.KeyFile,
pullClient.CaFile,
pullClient.InsecureSkipTLSVerify,
pullClient.PlainHTTP)
pullClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
3 changes: 2 additions & 1 deletion sdkexamples/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ func runUpgrade(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
upgradeClient.KeyFile,
upgradeClient.CaFile,
upgradeClient.InsecureSkipTLSVerify,
upgradeClient.PlainHTTP)
upgradeClient.PlainHTTP,
nil)
if err != nil {
return fmt.Errorf("missing registry client: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions versioned_docs/version-3/sdk/_install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func runInstall(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
registryClient, err := newRegistryClientTLS(
settings,
logger,
nil,
installClient.CertFile,
installClient.KeyFile,
installClient.CaFile,
Expand Down
13 changes: 10 additions & 3 deletions versioned_docs/version-3/sdk/_main.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"context"
"fmt"
"log"
"log/slog"
"os"

"helm.sh/helm/v3/pkg/action"
Expand Down Expand Up @@ -43,7 +44,7 @@ func initActionConfigList(settings *cli.EnvSettings, logger *log.Logger, allName
return actionConfig, nil
}

func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Client, error) {
func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool, logger *slog.Logger) (*registry.Client, error) {
opts := []registry.ClientOption{
registry.ClientOptDebug(settings.Debug),
registry.ClientOptEnableCache(true),
Expand All @@ -53,6 +54,12 @@ func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Cli
if plainHTTP {
opts = append(opts, registry.ClientOptPlainHTTP())
}
// Inject a custom structured logger for diagnostic messages.
// This prevents Helm from mutating global process state, which is
// important when embedding Helm as a library.
if logger != nil {
opts = append(opts, registry.ClientOptLogger(logger))
}

// Create a new registry client
registryClient, err := registry.NewClient(opts...)
Expand All @@ -62,7 +69,7 @@ func newRegistryClient(settings *cli.EnvSettings, plainHTTP bool) (*registry.Cli
return registryClient, nil
}

func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool) (*registry.Client, error) {
func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, slogger *slog.Logger, certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool) (*registry.Client, error) {
if certFile != "" && keyFile != "" || caFile != "" || insecureSkipTLSverify {
registryClient, err := registry.NewRegistryClientWithTLS(
logger.Writer(),
Expand All @@ -78,7 +85,7 @@ func newRegistryClientTLS(settings *cli.EnvSettings, logger *log.Logger, certFil
}
return registryClient, nil
}
registryClient, err := newRegistryClient(settings, plainHTTP)
registryClient, err := newRegistryClient(settings, plainHTTP, slogger)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion versioned_docs/version-3/sdk/_pull.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func runPull(logger *log.Logger, settings *cli.EnvSettings, chartRef, chartVersi
return fmt.Errorf("failed to init action config: %w", err)
}

registryClient, err := newRegistryClient(settings, false)
registryClient, err := newRegistryClient(settings, false, nil)
if err != nil {
return fmt.Errorf("failed to created registry client: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions versioned_docs/version-3/sdk/_upgrade.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ func runUpgrade(ctx context.Context, logger *log.Logger, settings *cli.EnvSettin
registryClient, err := newRegistryClientTLS(
settings,
logger,
nil,
upgradeClient.CertFile,
upgradeClient.KeyFile,
upgradeClient.CaFile,
Expand Down
Loading