From cf980e5472e766c65114f2b176ca58e5733606d7 Mon Sep 17 00:00:00 2001 From: Feng Shao Date: Tue, 21 Apr 2026 18:51:00 +0800 Subject: [PATCH] per review Signed-off-by: Feng Shao --- internal/chart/v3/util/dependencies.go | 3 +- pkg/chart/common/util/condition_expression.go | 30 +++++++++---------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/internal/chart/v3/util/dependencies.go b/internal/chart/v3/util/dependencies.go index 5bc604bf8..815691167 100644 --- a/internal/chart/v3/util/dependencies.go +++ b/internal/chart/v3/util/dependencies.go @@ -18,7 +18,6 @@ package util import ( "errors" "fmt" - "log" "log/slog" "strings" @@ -45,7 +44,7 @@ func processDependencyConditions(reqs []*chart.Dependency, cvals common.Values, if util.IsConditionExpression(r.Condition) { enabled, err := util.EvaluateConditionExpression(strings.TrimSpace(r.Condition), cvals, cpath, r.Name) if err != nil { - log.Printf("Warning: Failed to parse condition expression '%s' for chart %s: %v", strings.TrimSpace(r.Condition), r.Name, err) + slog.Warn("failed to parse condition expression", "expression", strings.TrimSpace(r.Condition), "chart", r.Name, "error", err) continue } r.Enabled = enabled diff --git a/pkg/chart/common/util/condition_expression.go b/pkg/chart/common/util/condition_expression.go index 630bd0cec..fc238a284 100644 --- a/pkg/chart/common/util/condition_expression.go +++ b/pkg/chart/common/util/condition_expression.go @@ -30,7 +30,6 @@ type conditionExpression interface { type conditionEvalContext struct { values common.Values - condition string chartName string chartPath string } @@ -88,16 +87,16 @@ func (n conditionOr) eval(ctx conditionEvalContext) bool { return n.right.eval(ctx) } -type conditionTokenType int +type conditionTokenType string const ( - conditionTokenEOF conditionTokenType = iota - conditionTokenLParen - conditionTokenRParen - conditionTokenAnd - conditionTokenOr - conditionTokenNot - conditionTokenPath + conditionTokenEOF conditionTokenType = "EOF" + conditionTokenLParen conditionTokenType = "Left Parenthesis" + conditionTokenRParen conditionTokenType = "Right Parenthesis" + conditionTokenAnd conditionTokenType = "And" + conditionTokenOr conditionTokenType = "Or" + conditionTokenNot conditionTokenType = "Not" + conditionTokenPath conditionTokenType = "Path" ) type conditionToken struct { @@ -124,23 +123,23 @@ func (t *conditionTokenizer) next() (conditionToken, error) { switch ch := t.input[t.pos]; ch { case '(': t.pos++ - return conditionToken{typeID: conditionTokenLParen, pos: t.pos - 1}, nil + return conditionToken{typeID: conditionTokenLParen, value: "(", pos: t.pos - 1}, nil case ')': t.pos++ - return conditionToken{typeID: conditionTokenRParen, pos: t.pos - 1}, nil + return conditionToken{typeID: conditionTokenRParen, value: ")", pos: t.pos - 1}, nil case '!': t.pos++ - return conditionToken{typeID: conditionTokenNot, pos: t.pos - 1}, nil + return conditionToken{typeID: conditionTokenNot, value: "!", pos: t.pos - 1}, nil case '&': if t.peek('&') { t.pos += 2 - return conditionToken{typeID: conditionTokenAnd, pos: t.pos - 2}, nil + return conditionToken{typeID: conditionTokenAnd, value: "&&", pos: t.pos - 2}, nil } return conditionToken{}, fmt.Errorf("unexpected token '&' at position %d", t.pos) case '|': if t.peek('|') { t.pos += 2 - return conditionToken{typeID: conditionTokenOr, pos: t.pos - 2}, nil + return conditionToken{typeID: conditionTokenOr, value: "||", pos: t.pos - 2}, nil } return conditionToken{}, fmt.Errorf("unexpected token '|' at position %d", t.pos) default: @@ -279,7 +278,7 @@ func (p *conditionParser) parsePrimary() (conditionExpression, error) { } return expr, nil default: - return nil, fmt.Errorf("unexpected token at position %d", p.current.pos) + return nil, fmt.Errorf("unexpected token %q (type %v) at position %d", p.current.value, p.current.typeID, p.current.pos) } } @@ -296,7 +295,6 @@ func EvaluateConditionExpression(condition string, cvals common.Values, cpath, c ctx := conditionEvalContext{ values: cvals, - condition: condition, chartName: chartName, chartPath: cpath, }