@@ -31,37 +31,37 @@ func (c *Config) LoadExperiments(
3131 ctx context.Context ,
3232 printDebug func (ctx context.Context , format string , a ... interface {}),
3333) {
34- experiments := map [string ]bool {}
34+ experiments := map [experiment. Experiment ]bool {}
3535 // Load from flags
3636 for _ , flagValue := range c .ExperimentsFlag {
37- experiments [flagValue ] = true
37+ experiments [experiment . Experiment ( flagValue ) ] = true
3838 }
3939 printDebug (ctx , fmt .Sprintf ("active flag experiments: %s" , formatExperimentMap (experiments )))
4040 // Load from project config file
4141 projectConfig , err := ReadProjectConfigFile (ctx , c .fs , c .os )
4242 if err != nil && slackerror .ToSlackError (err ).Code != slackerror .ErrInvalidAppDirectory {
4343 printDebug (ctx , fmt .Sprintf ("failed to parse project-level config file: %s" , err ))
4444 } else if err == nil {
45- printDebug (ctx , fmt .Sprintf ("active project experiments: %s" , formatExperimentMap (projectConfig .Experiments )))
46- maps .Copy (experiments , projectConfig .Experiments )
45+ printDebug (ctx , fmt .Sprintf ("active project experiments: %s" , formatExperimentMap (toExperimentMap ( projectConfig .Experiments ) )))
46+ maps .Copy (experiments , toExperimentMap ( projectConfig .Experiments ) )
4747 }
4848 // Load from system config file
4949 userConfig , err := c .SystemConfig .UserConfig (ctx )
5050 if err != nil {
5151 printDebug (ctx , fmt .Sprintf ("failed to parse system-level config file: %s" , err ))
5252 } else {
53- printDebug (ctx , fmt .Sprintf ("active system experiments: %s" , formatExperimentMap (userConfig .Experiments )))
54- maps .Copy (experiments , userConfig .Experiments )
53+ printDebug (ctx , fmt .Sprintf ("active system experiments: %s" , formatExperimentMap (toExperimentMap ( userConfig .Experiments ) )))
54+ maps .Copy (experiments , toExperimentMap ( userConfig .Experiments ) )
5555 }
5656 // Load from permanently enabled list
5757 for _ , exp := range experiment .EnabledExperiments {
58- experiments [string ( exp ) ] = true
58+ experiments [exp ] = true
5959 }
6060 printDebug (ctx , fmt .Sprintf ("active permanently enabled experiments: %s" , experiment .EnabledExperiments ))
6161 // Audit the experiments
6262 c .experiments = experiments
6363 for name := range c .experiments {
64- if ! experiment .Includes (experiment . Experiment ( name ) ) {
64+ if ! experiment .Includes (name ) {
6565 printDebug (ctx , fmt .Sprintf ("invalid experiment found: %s" , name ))
6666 }
6767 }
@@ -72,7 +72,7 @@ func (c *Config) GetExperiments() []experiment.Experiment {
7272 result := make ([]experiment.Experiment , 0 , len (c .experiments ))
7373 for name , enabled := range c .experiments {
7474 if enabled {
75- result = append (result , experiment . Experiment ( name ) )
75+ result = append (result , name )
7676 }
7777 }
7878 sort .Slice (result , func (i , j int ) bool {
@@ -83,19 +83,28 @@ func (c *Config) GetExperiments() []experiment.Experiment {
8383
8484// WithExperimentOn checks whether an experiment is currently toggled on
8585func (c * Config ) WithExperimentOn (experimentToCheck experiment.Experiment ) bool {
86- return c .experiments [string (experimentToCheck )]
86+ return c .experiments [experimentToCheck ]
87+ }
88+
89+ // toExperimentMap converts a map[string]bool to map[experiment.Experiment]bool
90+ func toExperimentMap (m map [string ]bool ) map [experiment.Experiment ]bool {
91+ result := make (map [experiment.Experiment ]bool , len (m ))
92+ for name , enabled := range m {
93+ result [experiment .Experiment (name )] = enabled
94+ }
95+ return result
8796}
8897
8998// formatExperimentMap returns a string representation of the experiments map
9099// for debug logging, formatted similar to the old slice format.
91- func formatExperimentMap (m map [string ]bool ) string {
100+ func formatExperimentMap (m map [experiment. Experiment ]bool ) string {
92101 if len (m ) == 0 {
93102 return "[]"
94103 }
95104 names := make ([]string , 0 , len (m ))
96105 for name , enabled := range m {
97106 if enabled {
98- names = append (names , name )
107+ names = append (names , string ( name ) )
99108 }
100109 }
101110 sort .Strings (names )
0 commit comments