Skip to content

Commit 83f9268

Browse files
tookyclaude
andcommitted
refactor: use plain params parameter instead of variadic
Changes Evaluate signature from variadic params to an explicit map parameter. Callers pass nil when no params are needed, making the API unambiguous. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 837e2f8 commit 83f9268

2 files changed

Lines changed: 12 additions & 16 deletions

File tree

internal/evaluate/rego.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type Result struct {
1818
// Evaluate evaluates a Rego policy against the given input.
1919
// The policy must use `package policy` and declare an `allow` rule.
2020
// An optional params map can be provided to populate data.params in the policy.
21-
func Evaluate(policySource string, input interface{}, params ...map[string]interface{}) (*Result, error) {
21+
func Evaluate(policySource string, input interface{}, params map[string]interface{}) (*Result, error) {
2222
if err := validatePolicy(policySource); err != nil {
2323
return nil, err
2424
}
@@ -30,8 +30,8 @@ func Evaluate(policySource string, input interface{}, params ...map[string]inter
3030
rego.Module("policy.rego", policySource),
3131
rego.Input(input),
3232
}
33-
if len(params) > 0 && params[0] != nil {
34-
store := inmem.NewFromObject(map[string]interface{}{"params": params[0]})
33+
if params != nil {
34+
store := inmem.NewFromObject(map[string]interface{}{"params": params})
3535
opts = append(opts, rego.Store(store))
3636
}
3737

@@ -54,11 +54,7 @@ func Evaluate(policySource string, input interface{}, params ...map[string]inter
5454
result := &Result{Allow: allow}
5555

5656
if !result.Allow {
57-
var p map[string]interface{}
58-
if len(params) > 0 {
59-
p = params[0]
60-
}
61-
violations, err := collectViolations(ctx, policySource, input, p)
57+
violations, err := collectViolations(ctx, policySource, input, params)
6258
if err != nil {
6359
return nil, err
6460
}

internal/evaluate/rego_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ allow = true
1717
},
1818
}
1919

20-
result, err := Evaluate(policy, input)
20+
result, err := Evaluate(policy, input, nil)
2121
require.NoError(t, err)
2222
require.True(t, result.Allow)
2323
require.Empty(t, result.Violations)
@@ -38,7 +38,7 @@ violations contains msg if {
3838
},
3939
}
4040

41-
result, err := Evaluate(policy, input)
41+
result, err := Evaluate(policy, input, nil)
4242
require.NoError(t, err)
4343
require.False(t, result.Allow)
4444
require.Contains(t, result.Violations, "always denied")
@@ -51,7 +51,7 @@ allow = true
5151
`
5252
input := map[string]interface{}{}
5353

54-
_, err := Evaluate(policy, input)
54+
_, err := Evaluate(policy, input, nil)
5555
require.Error(t, err)
5656
require.Contains(t, err.Error(), "package policy")
5757
}
@@ -65,7 +65,7 @@ violations contains msg if {
6565
`
6666
input := map[string]interface{}{}
6767

68-
_, err := Evaluate(policy, input)
68+
_, err := Evaluate(policy, input, nil)
6969
require.Error(t, err)
7070
require.Contains(t, err.Error(), "allow")
7171
}
@@ -77,7 +77,7 @@ allow = false
7777
`
7878
input := map[string]interface{}{}
7979

80-
result, err := Evaluate(policy, input)
80+
result, err := Evaluate(policy, input, nil)
8181
require.NoError(t, err)
8282
require.False(t, result.Allow)
8383
require.Empty(t, result.Violations)
@@ -90,7 +90,7 @@ allow = "yes"
9090
`
9191
input := map[string]interface{}{}
9292

93-
_, err := Evaluate(policy, input)
93+
_, err := Evaluate(policy, input, nil)
9494
require.Error(t, err)
9595
require.Contains(t, err.Error(), "boolean")
9696
}
@@ -102,7 +102,7 @@ allow = {{{
102102
`
103103
input := map[string]interface{}{}
104104

105-
_, err := Evaluate(policy, input)
105+
_, err := Evaluate(policy, input, nil)
106106
require.Error(t, err)
107107
require.Contains(t, err.Error(), "parse")
108108
}
@@ -160,7 +160,7 @@ violations contains msg if {
160160
}
161161

162162
// No params — policy uses default threshold of 10
163-
result, err := Evaluate(policy, input)
163+
result, err := Evaluate(policy, input, nil)
164164
require.NoError(t, err)
165165
require.False(t, result.Allow, "score 5 should fail default threshold 10")
166166
require.Len(t, result.Violations, 1)

0 commit comments

Comments
 (0)