@@ -26,53 +26,13 @@ import (
2626	apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 
2727	"k8s.io/apimachinery/pkg/runtime/schema" 
2828	crdmarkers "sigs.k8s.io/controller-tools/pkg/crd/markers" 
29+ 	"sigs.k8s.io/controller-tools/pkg/featuregate" 
2930	"sigs.k8s.io/controller-tools/pkg/genall" 
3031	"sigs.k8s.io/controller-tools/pkg/loader" 
3132	"sigs.k8s.io/controller-tools/pkg/markers" 
3233	"sigs.k8s.io/controller-tools/pkg/version" 
3334)
3435
35- // FeatureGateMap represents a map of feature gate names to their enabled status. 
36- type  FeatureGateMap  map [string ]bool 
37- 
38- // parseFeatureGates parses a feature gates string in the format "gate1=true,gate2=false" 
39- // and returns a FeatureGateMap. Supports comma-separated key=value pairs. 
40- // and returns a FeatureGateMap. 
41- func  parseFeatureGates (featureGatesStr  string ) (FeatureGateMap , error ) {
42- 	gates  :=  make (FeatureGateMap )
43- 	if  featureGatesStr  ==  ""  {
44- 		return  gates , nil 
45- 	}
46- 
47- 	pairs  :=  strings .Split (featureGatesStr , "," )
48- 	for  _ , pair  :=  range  pairs  {
49- 		parts  :=  strings .Split (strings .TrimSpace (pair ), "=" )
50- 		if  len (parts ) !=  2  {
51- 			return  nil , fmt .Errorf ("invalid feature gate format: %s (expected format: gate1=true,gate2=false)" , pair )
52- 		}
53- 
54- 		name  :=  strings .TrimSpace (parts [0 ])
55- 		valueStr  :=  strings .TrimSpace (parts [1 ])
56- 
57- 		switch  valueStr  {
58- 		case  "true" :
59- 			gates [name ] =  true 
60- 		case  "false" :
61- 			gates [name ] =  false 
62- 		default :
63- 			return  nil , fmt .Errorf ("invalid feature gate value for %s: %s (must be 'true' or 'false')" , name , valueStr )
64- 		}
65- 	}
66- 
67- 	return  gates , nil 
68- }
69- 
70- // isFeatureGateEnabled checks if a feature gate is enabled. 
71- func  (fg  FeatureGateMap ) isEnabled (gateName  string ) bool  {
72- 	enabled , exists  :=  fg [gateName ]
73- 	return  exists  &&  enabled 
74- }
75- 
7636// The identifier for v1 CustomResourceDefinitions. 
7737const  v1  =  "v1" 
7838
@@ -175,7 +135,7 @@ func transformPreserveUnknownFields(value bool) func(map[string]interface{}) err
175135}
176136
177137func  (g  Generator ) Generate (ctx  * genall.GenerationContext ) error  {
178- 	featureGates , err  :=  parseFeatureGates (g .FeatureGates )
138+ 	featureGates , err  :=  featuregate . ParseFeatureGates (g .FeatureGates ,  true )
179139	if  err  !=  nil  {
180140		return  fmt .Errorf ("invalid feature gates: %w" , err )
181141	}
0 commit comments