From bed023ec0d655d1fb8fb5a3f72819ebc1603f255 Mon Sep 17 00:00:00 2001 From: Moritz Clasmeier Date: Mon, 27 Apr 2026 12:47:25 +0200 Subject: [PATCH] Use strings.Cut for --set expression parsing --- internal/deployer/deployer.go | 12 +++++------- internal/deployer/override.go | 10 ---------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/internal/deployer/deployer.go b/internal/deployer/deployer.go index 2d50d3d2..4fc3ceb1 100644 --- a/internal/deployer/deployer.go +++ b/internal/deployer/deployer.go @@ -388,22 +388,20 @@ func (d *Deployer) SetCombinedOverrideFile(overrideFile string) error { func setOverrideSetExpressions(overrides map[string]interface{}, prefix string, overrideSetExpressions []string) ([]string, error) { remainingSetExpressions := make([]string, 0) for _, expr := range overrideSetExpressions { - // TODO(#91): would https://pkg.go.dev/strings#Cut work instead? - parts := splitAtFirstEquals(expr) - if len(parts) != 2 { + key, yamlValue, found := strings.Cut(expr, "=") + if !found { return nil, fmt.Errorf("invalid override expression '%s': expected format 'key.path=value'", expr) } - key := parts[0] if prefix != "" { - if !strings.HasPrefix(parts[0], prefix) { + if !strings.HasPrefix(key, prefix) { remainingSetExpressions = append(remainingSetExpressions, expr) continue } key = strings.TrimPrefix(key, prefix+".") } var val interface{} - if err := yaml.Unmarshal([]byte(parts[1]), &val); err != nil { - return nil, fmt.Errorf("failed to unmarshal value '%s' for key '%s': %w", parts[1], key, err) + if err := yaml.Unmarshal([]byte(yamlValue), &val); err != nil { + return nil, fmt.Errorf("failed to unmarshal value '%s' for key '%s': %w", yamlValue, key, err) } if err := setNestedValue(overrides, key, val); err != nil { return nil, fmt.Errorf("failed to set value for key '%s': %w", key, err) diff --git a/internal/deployer/override.go b/internal/deployer/override.go index 324ac1b9..ffc8a619 100644 --- a/internal/deployer/override.go +++ b/internal/deployer/override.go @@ -5,16 +5,6 @@ import ( "strings" ) -// splitAtFirstEquals splits a string at the first '=' character -// Returns [key, value] or just [expr] if no '=' found -func splitAtFirstEquals(expr string) []string { - idx := strings.Index(expr, "=") - if idx == -1 { - return []string{expr} - } - return []string{expr[:idx], expr[idx+1:]} -} - // setNestedValue sets a value at a nested path in a map // The path is a dot-separated string like "foo.bar.baz" // Creates intermediate maps as needed