فهرست منبع

runtime feature flag initialization

mmetc 2 سال پیش
والد
کامیت
5d2c99bb17
3فایلهای تغییر یافته به همراه21 افزوده شده و 4 حذف شده
  1. 7 1
      cmd/crowdsec-cli/main.go
  2. 8 1
      cmd/crowdsec/main.go
  3. 6 2
      pkg/fflag/crowdsec.go

+ 7 - 1
cmd/crowdsec-cli/main.go

@@ -138,9 +138,15 @@ func main() {
 	logFormatter := &log.TextFormatter{TimestampFormat: "02-01-2006 15:04:05", FullTimestamp: true}
 	log.SetFormatter(logFormatter)
 
+	if err := fflag.InitCrowdsecFeatures(); err != nil {
+		log.Fatalf("failed to initialize features: %s", err)
+	}
+
 	// some features can require configuration or command-line options,
 	// so we need to parse them asap. we'll load from feature.yaml later.
-	fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger())
+	if err := fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger()); err != nil {
+		log.Fatalf("failed to set features from environment: %s", err)
+	}
 
 	var rootCmd = &cobra.Command{
 		Use:   "cscli",

+ 8 - 1
cmd/crowdsec/main.go

@@ -314,6 +314,10 @@ func LoadConfig(cConfig *csconfig.Config) error {
 func LoadFeatureFlags(cConfig *csconfig.Config, logger *log.Logger) error {
 	featurePath := filepath.Join(cConfig.ConfigPaths.ConfigDir, "feature.yaml")
 
+	if err := fflag.InitCrowdsecFeatures(); err != nil {
+		log.Fatalf("failed to initialize features: %s", err)
+	}
+
 	if err := fflag.CrowdsecFeatures.SetFromYamlFile(featurePath, logger); err != nil {
 		return fmt.Errorf("file %s: %s", featurePath, err)
 	}
@@ -356,7 +360,10 @@ var crowdsecT0 time.Time
 func main() {
 	// some features can require configuration or command-line options,
 	// so wwe need to parse them asap. we'll load from feature.yaml later.
-	fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger())
+	if err := fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger()); err != nil {
+		log.Fatalf("failed set features from environment: %s", err)
+	}
+
 	crowdsecT0 = time.Now()
 
 	defer types.CatchPanic("crowdsec/main")

+ 6 - 2
pkg/fflag/crowdsec.go

@@ -1,5 +1,9 @@
 package fflag
 
-var CrowdsecFeatures = FeatureMap{
-	"cscli_setup": {},
+var CrowdsecFeatures FeatureMap
+
+func InitCrowdsecFeatures() error {
+	var err error
+	CrowdsecFeatures, err = NewFeatureMap(map[string]FeatureFlag{"cscli_setup": {}})
+	return err
 }