File size: 847 Bytes
1f10f31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package common

import (
	"github.com/google/wire"

	"github.com/openmeterio/openmeter/app/config"
	"github.com/openmeterio/openmeter/pkg/featuregate"
)

var FeatureGateChecker = wire.NewSet(
	featuregate.NewNoop,
	wire.FieldsOf(new(config.Configuration), "FeatureGate"),
	NewFeatureGateChecker,
)

func NewFeatureGateChecker(gate featuregate.Gate, config config.FeatureGateConfiguration, creditsConfig config.CreditsConfiguration) *featuregate.FeatureGateChecker {
	flags := make(featuregate.Flags)
	if config.Flags != nil {
		flags = config.Flags
	}

	flagOverrides := map[featuregate.FeatureFlag]bool{
		featuregate.CtxKeyCredits: creditsConfig.Enabled,
	}

	if !config.Enabled {
		return featuregate.NewFeatureGateChecker(featuregate.NewNoop(), flags, flagOverrides)
	}

	return featuregate.NewFeatureGateChecker(gate, flags, flagOverrides)
}