Skip to content

Commit 9f8fedd

Browse files
committed
Remove spaces from machine-readable comments (v3 only)
Signed-off-by: Adrian Orive <[email protected]>
1 parent c52c367 commit 9f8fedd

File tree

99 files changed

+294
-277
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+294
-277
lines changed

pkg/model/file/marker.go

+20-3
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,16 @@ import (
2424
const prefix = "+kubebuilder:scaffold:"
2525

2626
var commentsByExt = map[string]string{
27-
// TODO(v3): machine-readable comments should not have spaces by Go convention. However,
28-
// this is a backwards incompatible change, and thus should be done for next project version.
27+
".go": "//",
28+
".yaml": "#",
29+
// When adding additional file extensions, update also the NewMarkerFor documentation and error
30+
}
31+
32+
// TODO: remove when go.kubebuilder.io/v2 is removed
33+
var commentsByExtV2 = map[string]string{
2934
".go": "// ",
3035
".yaml": "# ",
31-
// When adding additional file extensions, update also the NewMarkerFor documentation and error
36+
// When adding additional file extensions, update also the NewMarkerForV2 documentation and error
3237
}
3338

3439
// Marker represents a machine-readable comment that will be used for scaffolding purposes
@@ -48,6 +53,18 @@ func NewMarkerFor(path string, value string) Marker {
4853
panic(fmt.Errorf("unknown file extension: '%s', expected '.go' or '.yaml'", ext))
4954
}
5055

56+
// NewMarkerForV2 creates a new marker customized for the specific v2 file
57+
// Supported file extensions: .go, .ext
58+
// TODO: remove when go.kubebuilder.io/v2 is removed
59+
func NewMarkerForV2(path string, value string) Marker {
60+
ext := filepath.Ext(path)
61+
if comment, found := commentsByExtV2[ext]; found {
62+
return Marker{comment, value}
63+
}
64+
65+
panic(fmt.Errorf("unknown file extension: '%s', expected '.go' or '.yaml'", ext))
66+
}
67+
5168
// String implements Stringer
5269
func (m Marker) String() string {
5370
return m.comment + prefix + m.value

pkg/plugins/golang/v2/scaffolds/internal/templates/config/crd/kustomization.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ func (f *Kustomization) SetTemplateDefaults() error {
4040
f.Path = f.Resource.Replacer().Replace(f.Path)
4141

4242
f.TemplateBody = fmt.Sprintf(kustomizationTemplate,
43-
file.NewMarkerFor(f.Path, resourceMarker),
44-
file.NewMarkerFor(f.Path, webhookPatchMarker),
45-
file.NewMarkerFor(f.Path, caInjectionPatchMarker),
43+
file.NewMarkerForV2(f.Path, resourceMarker),
44+
file.NewMarkerForV2(f.Path, webhookPatchMarker),
45+
file.NewMarkerForV2(f.Path, caInjectionPatchMarker),
4646
)
4747

4848
return nil
@@ -57,9 +57,9 @@ const (
5757
// GetMarkers implements file.Inserter
5858
func (f *Kustomization) GetMarkers() []file.Marker {
5959
return []file.Marker{
60-
file.NewMarkerFor(f.Path, resourceMarker),
61-
file.NewMarkerFor(f.Path, webhookPatchMarker),
62-
file.NewMarkerFor(f.Path, caInjectionPatchMarker),
60+
file.NewMarkerForV2(f.Path, resourceMarker),
61+
file.NewMarkerForV2(f.Path, webhookPatchMarker),
62+
file.NewMarkerForV2(f.Path, caInjectionPatchMarker),
6363
}
6464
}
6565

@@ -90,13 +90,13 @@ func (f *Kustomization) GetCodeFragments() file.CodeFragmentsMap {
9090

9191
// Only store code fragments in the map if the slices are non-empty
9292
if len(res) != 0 {
93-
fragments[file.NewMarkerFor(f.Path, resourceMarker)] = res
93+
fragments[file.NewMarkerForV2(f.Path, resourceMarker)] = res
9494
}
9595
if len(webhookPatch) != 0 {
96-
fragments[file.NewMarkerFor(f.Path, webhookPatchMarker)] = webhookPatch
96+
fragments[file.NewMarkerForV2(f.Path, webhookPatchMarker)] = webhookPatch
9797
}
9898
if len(caInjectionPatch) != 0 {
99-
fragments[file.NewMarkerFor(f.Path, caInjectionPatchMarker)] = caInjectionPatch
99+
fragments[file.NewMarkerForV2(f.Path, caInjectionPatchMarker)] = caInjectionPatch
100100
}
101101

102102
return fragments

pkg/plugins/golang/v2/scaffolds/internal/templates/controllers/controller_suitetest.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ func (f *SuiteTest) SetTemplateDefaults() error {
5353
f.Path = f.Resource.Replacer().Replace(f.Path)
5454

5555
f.TemplateBody = fmt.Sprintf(controllerSuiteTestTemplate,
56-
file.NewMarkerFor(f.Path, importMarker),
57-
file.NewMarkerFor(f.Path, addSchemeMarker),
56+
file.NewMarkerForV2(f.Path, importMarker),
57+
file.NewMarkerForV2(f.Path, addSchemeMarker),
5858
)
5959

6060
// If is multigroup the path needs to be ../../ since it has
@@ -75,8 +75,8 @@ const (
7575
// GetMarkers implements file.Inserter
7676
func (f *SuiteTest) GetMarkers() []file.Marker {
7777
return []file.Marker{
78-
file.NewMarkerFor(f.Path, importMarker),
79-
file.NewMarkerFor(f.Path, addSchemeMarker),
78+
file.NewMarkerForV2(f.Path, importMarker),
79+
file.NewMarkerForV2(f.Path, addSchemeMarker),
8080
}
8181
}
8282

@@ -107,10 +107,10 @@ func (f *SuiteTest) GetCodeFragments() file.CodeFragmentsMap {
107107

108108
// Only store code fragments in the map if the slices are non-empty
109109
if len(imports) != 0 {
110-
fragments[file.NewMarkerFor(f.Path, importMarker)] = imports
110+
fragments[file.NewMarkerForV2(f.Path, importMarker)] = imports
111111
}
112112
if len(addScheme) != 0 {
113-
fragments[file.NewMarkerFor(f.Path, addSchemeMarker)] = addScheme
113+
fragments[file.NewMarkerForV2(f.Path, addSchemeMarker)] = addScheme
114114
}
115115

116116
return fragments

pkg/plugins/golang/v2/scaffolds/internal/templates/main.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ func (f *Main) SetTemplateDefaults() error {
4242
}
4343

4444
f.TemplateBody = fmt.Sprintf(mainTemplate,
45-
file.NewMarkerFor(f.Path, importMarker),
46-
file.NewMarkerFor(f.Path, addSchemeMarker),
47-
file.NewMarkerFor(f.Path, setupMarker),
45+
file.NewMarkerForV2(f.Path, importMarker),
46+
file.NewMarkerForV2(f.Path, addSchemeMarker),
47+
file.NewMarkerForV2(f.Path, setupMarker),
4848
)
4949

5050
return nil
@@ -81,9 +81,9 @@ const (
8181
// GetMarkers implements file.Inserter
8282
func (f *MainUpdater) GetMarkers() []file.Marker {
8383
return []file.Marker{
84-
file.NewMarkerFor(defaultMainPath, importMarker),
85-
file.NewMarkerFor(defaultMainPath, addSchemeMarker),
86-
file.NewMarkerFor(defaultMainPath, setupMarker),
84+
file.NewMarkerForV2(defaultMainPath, importMarker),
85+
file.NewMarkerForV2(defaultMainPath, addSchemeMarker),
86+
file.NewMarkerForV2(defaultMainPath, setupMarker),
8787
}
8888
}
8989

@@ -175,13 +175,13 @@ func (f *MainUpdater) GetCodeFragments() file.CodeFragmentsMap {
175175

176176
// Only store code fragments in the map if the slices are non-empty
177177
if len(imports) != 0 {
178-
fragments[file.NewMarkerFor(defaultMainPath, importMarker)] = imports
178+
fragments[file.NewMarkerForV2(defaultMainPath, importMarker)] = imports
179179
}
180180
if len(addScheme) != 0 {
181-
fragments[file.NewMarkerFor(defaultMainPath, addSchemeMarker)] = addScheme
181+
fragments[file.NewMarkerForV2(defaultMainPath, addSchemeMarker)] = addScheme
182182
}
183183
if len(setup) != 0 {
184-
fragments[file.NewMarkerFor(defaultMainPath, setupMarker)] = setup
184+
fragments[file.NewMarkerForV2(defaultMainPath, setupMarker)] = setup
185185
}
186186

187187
return fragments

pkg/plugins/golang/v3/scaffolds/internal/templates/api/group.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ func (f *Group) SetTemplateDefaults() error {
5656
const groupTemplate = `{{ .Boilerplate }}
5757
5858
// Package {{ .Resource.Version }} contains API Schema definitions for the {{ .Resource.Group }} {{ .Resource.Version }} API group
59-
// +kubebuilder:object:generate=true
60-
// +groupName={{ .Resource.Domain }}
59+
//+kubebuilder:object:generate=true
60+
//+groupName={{ .Resource.Domain }}
6161
package {{ .Resource.Version }}
6262
6363
import (

pkg/plugins/golang/v3/scaffolds/internal/templates/api/types.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ type {{ .Resource.Kind }}Status struct {
8282
// Important: Run "make" to regenerate code after modifying this file
8383
}
8484
85-
// +kubebuilder:object:root=true
86-
// +kubebuilder:subresource:status
87-
{{ if not .Resource.Namespaced }} // +kubebuilder:resource:scope=Cluster {{ end }}
85+
//+kubebuilder:object:root=true
86+
//+kubebuilder:subresource:status
87+
{{ if not .Resource.Namespaced }} //+kubebuilder:resource:scope=Cluster {{ end }}
8888
8989
// {{ .Resource.Kind }} is the Schema for the {{ .Resource.Plural }} API
9090
type {{ .Resource.Kind }} struct {
@@ -95,7 +95,7 @@ type {{ .Resource.Kind }} struct {
9595
Status {{ .Resource.Kind }}Status ` + "`" + `json:"status,omitempty"` + "`" + `
9696
}
9797
98-
// +kubebuilder:object:root=true
98+
//+kubebuilder:object:root=true
9999
100100
// {{ .Resource.Kind }}List contains a list of {{ .Resource.Kind }}
101101
type {{ .Resource.Kind }}List struct {

pkg/plugins/golang/v3/scaffolds/internal/templates/api/webhook.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (r *{{ .Resource.Kind }}) SetupWebhookWithManager(mgr ctrl.Manager) error {
111111
// TODO(estroz): update admissionReviewVersions to include v1 when controller-runtime supports that version.
112112
//nolint:lll
113113
defaultingWebhookTemplate = `
114-
// +kubebuilder:webhook:{{ if ne .WebhookVersion "v1" }}webhookVersions={{"{"}}{{ .WebhookVersion }}{{"}"}},{{ end }}path=/mutate-{{ .GroupDomainWithDash }}-{{ .Resource.Version }}-{{ lower .Resource.Kind }},mutating=true,failurePolicy=fail,sideEffects=None,groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=create;update,versions={{ .Resource.Version }},name=m{{ lower .Resource.Kind }}.kb.io,admissionReviewVersions={v1beta1}
114+
//+kubebuilder:webhook:{{ if ne .WebhookVersion "v1" }}webhookVersions={{"{"}}{{ .WebhookVersion }}{{"}"}},{{ end }}path=/mutate-{{ .GroupDomainWithDash }}-{{ .Resource.Version }}-{{ lower .Resource.Kind }},mutating=true,failurePolicy=fail,sideEffects=None,groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=create;update,versions={{ .Resource.Version }},name=m{{ lower .Resource.Kind }}.kb.io,admissionReviewVersions={v1beta1}
115115
116116
var _ webhook.Defaulter = &{{ .Resource.Kind }}{}
117117
@@ -127,7 +127,7 @@ func (r *{{ .Resource.Kind }}) Default() {
127127
//nolint:lll
128128
validatingWebhookTemplate = `
129129
// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
130-
// +kubebuilder:webhook:{{ if ne .WebhookVersion "v1" }}webhookVersions={{"{"}}{{ .WebhookVersion }}{{"}"}},{{ end }}path=/validate-{{ .GroupDomainWithDash }}-{{ .Resource.Version }}-{{ lower .Resource.Kind }},mutating=false,failurePolicy=fail,sideEffects=None,groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=create;update,versions={{ .Resource.Version }},name=v{{ lower .Resource.Kind }}.kb.io,admissionReviewVersions={v1beta1}
130+
//+kubebuilder:webhook:{{ if ne .WebhookVersion "v1" }}webhookVersions={{"{"}}{{ .WebhookVersion }}{{"}"}},{{ end }}path=/validate-{{ .GroupDomainWithDash }}-{{ .Resource.Version }}-{{ lower .Resource.Kind }},mutating=false,failurePolicy=fail,sideEffects=None,groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=create;update,versions={{ .Resource.Version }},name=v{{ lower .Resource.Kind }}.kb.io,admissionReviewVersions={v1beta1}
131131
132132
var _ webhook.Validator = &{{ .Resource.Kind }}{}
133133

pkg/plugins/golang/v3/scaffolds/internal/templates/controllers/controller.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ type {{ .Resource.Kind }}Reconciler struct {
8585
Scheme *runtime.Scheme
8686
}
8787
88-
// +kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=get;list;watch;create;update;patch;delete
89-
// +kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }}/status,verbs=get;update;patch
90-
// +kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }}/finalizers,verbs=update
88+
//+kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }},verbs=get;list;watch;create;update;patch;delete
89+
//+kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }}/status,verbs=get;update;patch
90+
//+kubebuilder:rbac:groups={{ .Resource.Domain }},resources={{ .Resource.Plural }}/finalizers,verbs=update
9191
9292
// Reconcile is part of the main kubernetes reconciliation loop which aims to
9393
// move the current state of the cluster closer to the desired state.

pkg/plugins/internal/machinery/scaffold_test.go

+20-20
Original file line numberDiff line numberDiff line change
@@ -206,25 +206,25 @@ var _ = Describe("Scaffold", func() {
206206
},
207207
Entry("should insert lines for go files",
208208
`
209-
// +kubebuilder:scaffold:-
209+
//+kubebuilder:scaffold:-
210210
`,
211211
`
212212
1
213213
2
214-
// +kubebuilder:scaffold:-
214+
//+kubebuilder:scaffold:-
215215
`,
216216
fakeInserter{codeFragments: file.CodeFragmentsMap{
217217
file.NewMarkerFor("file.go", "-"): {"1\n", "2\n"}},
218218
},
219219
),
220220
Entry("should insert lines for yaml files",
221221
`
222-
# +kubebuilder:scaffold:-
222+
#+kubebuilder:scaffold:-
223223
`,
224224
`
225225
1
226226
2
227-
# +kubebuilder:scaffold:-
227+
#+kubebuilder:scaffold:-
228228
`,
229229
fakeInserter{codeFragments: file.CodeFragmentsMap{
230230
file.NewMarkerFor("file.yaml", "-"): {"1\n", "2\n"}},
@@ -235,10 +235,10 @@ var _ = Describe("Scaffold", func() {
235235
`
236236
1
237237
2
238-
// +kubebuilder:scaffold:-
238+
//+kubebuilder:scaffold:-
239239
`,
240240
fakeTemplate{fakeBuilder: fakeBuilder{ifExistsAction: file.Overwrite}, body: `
241-
// +kubebuilder:scaffold:-
241+
//+kubebuilder:scaffold:-
242242
`},
243243
fakeInserter{codeFragments: file.CodeFragmentsMap{
244244
file.NewMarkerFor("file.go", "-"): {"1\n", "2\n"}},
@@ -249,23 +249,23 @@ var _ = Describe("Scaffold", func() {
249249
`
250250
1
251251
2
252-
// +kubebuilder:scaffold:-
252+
//+kubebuilder:scaffold:-
253253
`,
254254
fakeTemplate{fakeBuilder: fakeBuilder{ifExistsAction: file.Overwrite}, body: `
255-
// +kubebuilder:scaffold:-
255+
//+kubebuilder:scaffold:-
256256
`},
257257
fakeInserter{codeFragments: file.CodeFragmentsMap{
258258
file.NewMarkerFor("file.go", "-"): {"1\n", "2\n"}},
259259
},
260260
),
261261
Entry("should use files over optional models",
262262
`
263-
// +kubebuilder:scaffold:-
263+
//+kubebuilder:scaffold:-
264264
`,
265265
`
266266
1
267267
2
268-
// +kubebuilder:scaffold:-
268+
//+kubebuilder:scaffold:-
269269
`,
270270
fakeTemplate{body: fileContent},
271271
fakeInserter{
@@ -276,14 +276,14 @@ var _ = Describe("Scaffold", func() {
276276
),
277277
Entry("should filter invalid markers",
278278
`
279-
// +kubebuilder:scaffold:-
280-
// +kubebuilder:scaffold:*
279+
//+kubebuilder:scaffold:-
280+
//+kubebuilder:scaffold:*
281281
`,
282282
`
283283
1
284284
2
285-
// +kubebuilder:scaffold:-
286-
// +kubebuilder:scaffold:*
285+
//+kubebuilder:scaffold:-
286+
//+kubebuilder:scaffold:*
287287
`,
288288
fakeInserter{
289289
markers: []file.Marker{file.NewMarkerFor("file.go", "-")},
@@ -296,18 +296,18 @@ var _ = Describe("Scaffold", func() {
296296
Entry("should filter already existing one-line code fragments",
297297
`
298298
1
299-
// +kubebuilder:scaffold:-
299+
//+kubebuilder:scaffold:-
300300
3
301301
4
302-
// +kubebuilder:scaffold:*
302+
//+kubebuilder:scaffold:*
303303
`,
304304
`
305305
1
306306
2
307-
// +kubebuilder:scaffold:-
307+
//+kubebuilder:scaffold:-
308308
3
309309
4
310-
// +kubebuilder:scaffold:*
310+
//+kubebuilder:scaffold:*
311311
`,
312312
fakeInserter{
313313
codeFragments: file.CodeFragmentsMap{
@@ -319,10 +319,10 @@ var _ = Describe("Scaffold", func() {
319319
Entry("should not insert anything if no code fragment",
320320
"", // input is provided through a template as mock fs doesn't copy it to the output buffer if no-op
321321
`
322-
// +kubebuilder:scaffold:-
322+
//+kubebuilder:scaffold:-
323323
`,
324324
fakeTemplate{body: `
325-
// +kubebuilder:scaffold:-
325+
//+kubebuilder:scaffold:-
326326
`},
327327
fakeInserter{
328328
codeFragments: file.CodeFragmentsMap{

testdata/project-v3-addon/api/v1/admiral_types.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ type AdmiralStatus struct {
4141
// Important: Run "make" to regenerate code after modifying this file
4242
}
4343

44-
// +kubebuilder:object:root=true
45-
// +kubebuilder:subresource:status
46-
// +kubebuilder:resource:scope=Cluster
44+
//+kubebuilder:object:root=true
45+
//+kubebuilder:subresource:status
46+
//+kubebuilder:resource:scope=Cluster
4747

4848
// Admiral is the Schema for the admirals API
4949
type Admiral struct {
@@ -76,8 +76,8 @@ func (o *Admiral) SetCommonStatus(s addonv1alpha1.CommonStatus) {
7676
o.Status.CommonStatus = s
7777
}
7878

79-
// +kubebuilder:object:root=true
80-
// +kubebuilder:resource:scope=Cluster
79+
//+kubebuilder:object:root=true
80+
//+kubebuilder:resource:scope=Cluster
8181

8282
// AdmiralList contains a list of Admiral
8383
type AdmiralList struct {

testdata/project-v3-addon/api/v1/captain_types.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ type CaptainStatus struct {
4141
// Important: Run "make" to regenerate code after modifying this file
4242
}
4343

44-
// +kubebuilder:object:root=true
45-
// +kubebuilder:subresource:status
44+
//+kubebuilder:object:root=true
45+
//+kubebuilder:subresource:status
4646

4747
// Captain is the Schema for the captains API
4848
type Captain struct {
@@ -75,7 +75,7 @@ func (o *Captain) SetCommonStatus(s addonv1alpha1.CommonStatus) {
7575
o.Status.CommonStatus = s
7676
}
7777

78-
// +kubebuilder:object:root=true
78+
//+kubebuilder:object:root=true
7979

8080
// CaptainList contains a list of Captain
8181
type CaptainList struct {

0 commit comments

Comments
 (0)