@@ -29,10 +29,12 @@ import (
29
29
"sigs.k8s.io/kubebuilder/v3/pkg/plugin/util"
30
30
"sigs.k8s.io/kubebuilder/v3/pkg/plugins"
31
31
kustomizev1scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v1/scaffolds"
32
+ kustomizev2scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/common/kustomize/v2-alpha/scaffolds"
32
33
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/api"
33
34
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/config/samples"
34
35
"sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/deploy-image/v1alpha1/scaffolds/internal/templates/controllers"
35
36
golangv3scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v3/scaffolds"
37
+ golangv4scaffolds "sigs.k8s.io/kubebuilder/v3/pkg/plugins/golang/v4/scaffolds"
36
38
)
37
39
38
40
var _ plugins.Scaffolder = & apiScaffolder {}
@@ -75,7 +77,15 @@ func (s *apiScaffolder) InjectFS(fs machinery.Filesystem) {
75
77
func (s * apiScaffolder ) Scaffold () error {
76
78
fmt .Println ("Writing scaffold for you to edit..." )
77
79
78
- if err := s .scaffoldCreateAPIFromPlugins (); err != nil {
80
+ //nolint:staticcheck
81
+ isGoV3 := false
82
+ for _ , pluginKey := range s .config .GetPluginChain () {
83
+ if strings .Contains (pluginKey , "go.kubebuilder.io/v3" ) {
84
+ isGoV3 = true
85
+ }
86
+ }
87
+
88
+ if err := s .scaffoldCreateAPIFromPlugins (isGoV3 ); err != nil {
79
89
return err
80
90
}
81
91
@@ -157,12 +167,12 @@ func (s *apiScaffolder) addEnvVarIntoManager() error {
157
167
158
168
// scaffoldCreateAPIFromPlugins will reuse the code from the kustomize and base golang
159
169
// plugins to do the default scaffolds which an API is created
160
- func (s * apiScaffolder ) scaffoldCreateAPIFromPlugins () error {
161
- if err := s .scaffoldCreateAPIFromGolang (); err != nil {
170
+ func (s * apiScaffolder ) scaffoldCreateAPIFromPlugins (isLegacyLayout bool ) error {
171
+ if err := s .scaffoldCreateAPIFromGolang (isLegacyLayout ); err != nil {
162
172
return fmt .Errorf ("error scaffolding golang files for the new API: %v" , err )
163
173
}
164
174
165
- if err := s .scaffoldCreateAPIFromKustomize (); err != nil {
175
+ if err := s .scaffoldCreateAPIFromKustomize (isLegacyLayout ); err != nil {
166
176
return fmt .Errorf ("error scaffolding kustomize manifests for the new API: %v" , err )
167
177
}
168
178
return nil
@@ -266,32 +276,49 @@ func (s *apiScaffolder) updateControllerCode(controller controllers.Controller)
266
276
return nil
267
277
}
268
278
269
- func (s * apiScaffolder ) scaffoldCreateAPIFromKustomize () error {
279
+ func (s * apiScaffolder ) scaffoldCreateAPIFromKustomize (isGoV3 bool ) error {
270
280
// Now we need call the kustomize/v1 plugin to do its scaffolds when we create a new API
271
281
// todo: when we have the go/v4-alpha plugin we will also need to check what is the plugin used
272
282
// in the Project layout to know if we should use kustomize/v1 OR kustomize/v2-alpha
273
- kustomizeV1Scaffolder := kustomizev1scaffolds .NewAPIScaffolder (
274
- s .config ,
275
- s .resource ,
276
- true ,
277
- )
278
- kustomizeV1Scaffolder .InjectFS (s .fs )
283
+ var kustomizeScaffolder plugins.Scaffolder
284
+
285
+ if isGoV3 {
286
+ kustomizeScaffolder = kustomizev1scaffolds .NewAPIScaffolder (
287
+ s .config ,
288
+ s .resource ,
289
+ true ,
290
+ )
291
+ } else {
292
+ kustomizeScaffolder = kustomizev2scaffolds .NewAPIScaffolder (
293
+ s .config ,
294
+ s .resource ,
295
+ true ,
296
+ )
297
+ }
279
298
280
- if err := kustomizeV1Scaffolder .Scaffold (); err != nil {
299
+ kustomizeScaffolder .InjectFS (s .fs )
300
+
301
+ if err := kustomizeScaffolder .Scaffold (); err != nil {
281
302
return fmt .Errorf ("error scaffolding kustomize files for the APIs: %v" , err )
282
303
}
304
+
283
305
return nil
284
306
}
285
307
286
- func (s * apiScaffolder ) scaffoldCreateAPIFromGolang () error {
308
+ func (s * apiScaffolder ) scaffoldCreateAPIFromGolang (isGoV3 bool ) error {
287
309
// Now we need call the kustomize/v1 plugin to do its scaffolds when we create a new API
288
310
// todo: when we have the go/v4-alpha plugin we will also need to check what is the plugin used
289
311
// in the Project layout to know if we should use kustomize/v1 OR kustomize/v2-alpha
290
-
291
- golangV3Scaffolder := golangv3scaffolds .NewAPIScaffolder (s .config ,
312
+ if isGoV3 {
313
+ golangV3Scaffolder := golangv3scaffolds .NewAPIScaffolder (s .config ,
314
+ s .resource , true )
315
+ golangV3Scaffolder .InjectFS (s .fs )
316
+ return golangV3Scaffolder .Scaffold ()
317
+ }
318
+ golangV4Scaffolder := golangv4scaffolds .NewAPIScaffolder (s .config ,
292
319
s .resource , true )
293
- golangV3Scaffolder .InjectFS (s .fs )
294
- return golangV3Scaffolder .Scaffold ()
320
+ golangV4Scaffolder .InjectFS (s .fs )
321
+ return golangV4Scaffolder .Scaffold ()
295
322
}
296
323
297
324
const containerTemplate = `Containers: []corev1.Container{{
0 commit comments