Skip to content

Commit 430f60e

Browse files
committed
chore: Bump major version, add evaluation context codegen to CI
1 parent ec6639a commit 430f60e

28 files changed

+93
-107
lines changed

.github/workflows/go.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ jobs:
3030
with:
3131
submodules: recursive
3232

33+
- name: Build evaluation context struct
34+
run: make generate-evaluation-context
35+
3336
- name: Get dependencies
3437
run: |
3538
go get -v -t -d ./...

.github/workflows/lint.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

.pre-commit-config.yaml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
repos:
2-
- repo: https://github.com/dnephin/pre-commit-golang
3-
rev: v0.5.0
4-
5-
hooks:
6-
- id: go-fmt
7-
- id: go-vet
8-
- id: go-imports
9-
- id: golangci-lint
10-
- id: go-build
11-
- id: go-critic
12-
- id: go-mod-tidy
13-
14-
2+
- repo: https://github.com/golangci/golangci-lint
3+
rev: v1.61.0
4+
hooks:
5+
- id: golangci-lint

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,10 @@ EVALUATION_CONTEXT_SCHEMA_URL ?= https://raw.githubusercontent.com/Flagsmith/fla
55

66
.PHONY: generate-evaluation-context
77
generate-evaluation-context:
8-
npx quicktype ${EVALUATION_CONTEXT_SCHEMA_URL} --src-lang schema --lang go --package flagsmith --omit-empty --just-types-and-package > evaluationcontext.go
8+
npx quicktype ${EVALUATION_CONTEXT_SCHEMA_URL} \
9+
--src-lang schema \
10+
--lang go \
11+
--package flagsmith \
12+
--omit-empty \
13+
--just-types-and-package \
14+
> evaluationcontext.go

client.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import (
77
"sync/atomic"
88
"time"
99

10-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine"
11-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments"
12-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities"
13-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments"
10+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine"
11+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments"
12+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities"
13+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments"
1414
"github.com/go-resty/resty/v2"
1515

16-
enginetraits "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits"
16+
enginetraits "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits"
1717
)
1818

1919
type contextKey string
@@ -117,7 +117,7 @@ func (c *Client) GetFlags(ctx context.Context, ec *EvaluationContext) (f Flags,
117117
if ec != nil {
118118
ctx = WithEvaluationContext(ctx, *ec)
119119
if ec.Identity != nil {
120-
return c.GetIdentityFlags(ctx, ec.Identity.Identifier, mapIdentityEvaluationContextToTraits(*ec.Identity))
120+
return c.GetIdentityFlags(ctx, *ec.Identity.Identifier, mapIdentityEvaluationContextToTraits(*ec.Identity))
121121
}
122122
}
123123
return c.GetEnvironmentFlags(ctx)
@@ -263,7 +263,7 @@ func (c *Client) GetIdentityFlagsFromAPI(ctx context.Context, identifier string,
263263
idCtx := ec.Identity
264264
if idCtx != nil {
265265
// `Identifier` and `Traits` had been set by `GetFlags` earlier.
266-
body.Transient = &idCtx.Transient
266+
body.Transient = idCtx.Transient
267267
}
268268
}
269269
resp, err := req.

client_test.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
"testing"
1212
"time"
1313

14-
flagsmith "github.com/Flagsmith/flagsmith-go-client/v3"
15-
"github.com/Flagsmith/flagsmith-go-client/v3/fixtures"
14+
flagsmith "github.com/Flagsmith/flagsmith-go-client/v4"
15+
"github.com/Flagsmith/flagsmith-go-client/v4/fixtures"
1616
"github.com/stretchr/testify/assert"
1717
)
1818

@@ -204,6 +204,8 @@ func TestGetFlags(t *testing.T) {
204204

205205
func TestGetFlagsTransientIdentity(t *testing.T) {
206206
// Given
207+
identifier := "transient"
208+
transient := true
207209
ctx := context.Background()
208210
expectedRequestBody := `{"identifier":"transient","transient":true}`
209211
server := getTestHttpServer(t, "/api/v1/identities/", fixtures.EnvironmentAPIKey, &expectedRequestBody, fixtures.IdentityResponseJson)
@@ -212,7 +214,7 @@ func TestGetFlagsTransientIdentity(t *testing.T) {
212214
// When
213215
client := flagsmith.NewClient(fixtures.EnvironmentAPIKey, flagsmith.WithBaseURL(server.URL+"/api/v1/"))
214216

215-
flags, err := client.GetFlags(ctx, &flagsmith.EvaluationContext{Identity: &flagsmith.IdentityEvaluationContext{Identifier: "transient", Transient: true}})
217+
flags, err := client.GetFlags(ctx, &flagsmith.EvaluationContext{Identity: &flagsmith.IdentityEvaluationContext{Identifier: &identifier, Transient: &transient}})
216218

217219
// Then
218220
assert.NoError(t, err)
@@ -228,6 +230,8 @@ func TestGetFlagsTransientIdentity(t *testing.T) {
228230

229231
func TestGetFlagsTransientTraits(t *testing.T) {
230232
// Given
233+
identifier := "test_identity"
234+
transient := true
231235
ctx := context.Background()
232236
expectedRequestBody := `{"identifier":"test_identity","traits":` +
233237
`[{"trait_key":"NullTrait","trait_value":null},` +
@@ -243,13 +247,13 @@ func TestGetFlagsTransientTraits(t *testing.T) {
243247
ctx,
244248
&flagsmith.EvaluationContext{
245249
Identity: &flagsmith.IdentityEvaluationContext{
246-
Identifier: "test_identity",
250+
Identifier: &identifier,
247251
Traits: map[string]*flagsmith.TraitEvaluationContext{
248252
"NullTrait": nil,
249253
"StringTrait": {Value: "value"},
250254
"TransientTrait": {
251255
Value: "value",
252-
Transient: true,
256+
Transient: &transient,
253257
},
254258
},
255259
},
@@ -289,6 +293,7 @@ func TestGetFlagsEnvironmentEvaluationContextFlags(t *testing.T) {
289293

290294
func TestGetFlagsEnvironmentEvaluationContextIdentity(t *testing.T) {
291295
// Given
296+
identifier := "test_identity"
292297
ctx := context.Background()
293298
expectedEnvKey := "different"
294299
server := getTestHttpServer(t, "/api/v1/identities/", expectedEnvKey, nil, fixtures.IdentityResponseJson)
@@ -301,7 +306,7 @@ func TestGetFlagsEnvironmentEvaluationContextIdentity(t *testing.T) {
301306
ctx,
302307
&flagsmith.EvaluationContext{
303308
Environment: &flagsmith.EnvironmentEvaluationContext{APIKey: expectedEnvKey},
304-
Identity: &flagsmith.IdentityEvaluationContext{Identifier: "test_identity"},
309+
Identity: &flagsmith.IdentityEvaluationContext{Identifier: &identifier},
305310
})
306311

307312
// Then

evaluationcontext.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ type FeatureEvaluationContext struct {
1515
}
1616

1717
type IdentityEvaluationContext struct {
18-
Identifier string `json:"identifier,omitempty"`
18+
Identifier *string `json:"identifier,omitempty"`
1919
Traits map[string]*TraitEvaluationContext `json:"traits,omitempty"`
20-
Transient bool `json:"transient,omitempty"`
20+
Transient *bool `json:"transient,omitempty"`
2121
}
2222

2323
type TraitEvaluationContext struct {
24-
Transient bool `json:"transient,omitempty"`
24+
Transient *bool `json:"transient,omitempty"`
2525
Value interface{} `json:"value"`
2626
}

evaluationcontext_static.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ func getTraitEvaluationContext(v interface{}) TraitEvaluationContext {
99
}
1010

1111
func NewTraitEvaluationContext(value interface{}, transient bool) TraitEvaluationContext {
12-
return TraitEvaluationContext{Value: value, Transient: transient}
12+
return TraitEvaluationContext{Value: value, Transient: &transient}
1313
}
1414

1515
func NewEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext {
@@ -20,14 +20,15 @@ func NewEvaluationContext(identifier string, traits map[string]interface{}) Eval
2020
traitsCtx[tKey] = &tCtx
2121
}
2222
ec.Identity = &IdentityEvaluationContext{
23-
Identifier: identifier,
23+
Identifier: &identifier,
2424
Traits: traitsCtx,
2525
}
2626
return ec
2727
}
2828

2929
func NewTransientEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext {
3030
ec := NewEvaluationContext(identifier, traits)
31-
ec.Identity.Transient = true
31+
var transient = true
32+
ec.Identity.Transient = &transient
3233
return ec
3334
}

flagengine/engine.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package flagengine
22

33
import (
4-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments"
5-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features"
6-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities"
7-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits"
8-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments"
4+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments"
5+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features"
6+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities"
7+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits"
8+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments"
99
)
1010

1111
// GetEnvironmentFeatureStates returns a list of feature states for a given environment.

flagengine/engine_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package flagengine_test
33
import (
44
"testing"
55

6-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine"
7-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments"
8-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features"
9-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits"
10-
"github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils/fixtures"
6+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine"
7+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments"
8+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features"
9+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits"
10+
"github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils/fixtures"
1111
"github.com/stretchr/testify/assert"
1212
)
1313

0 commit comments

Comments
 (0)