From 31c93d26412cfa888a39d9648f7ab48e52099a94 Mon Sep 17 00:00:00 2001 From: Tom Wieczorek Date: Thu, 4 Jul 2024 17:22:31 +0200 Subject: [PATCH] :sparkles: Make the anonymous value of the groupName marker optional Upstream introduced the use of empty groupName markers in k/k PR 125162. This breaks groupName parsing because its field is non-optional. Add an additional mustOptional function that takes anonymous field definitions and turns them into optional ones. Signed-off-by: Tom Wieczorek --- pkg/crd/markers/package.go | 2 +- pkg/crd/markers/register.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/crd/markers/package.go b/pkg/crd/markers/package.go index cebe8fa4b..86851b2c4 100644 --- a/pkg/crd/markers/package.go +++ b/pkg/crd/markers/package.go @@ -22,7 +22,7 @@ import ( func init() { AllDefinitions = append(AllDefinitions, - must(markers.MakeDefinition("groupName", markers.DescribesPackage, "")). + mustOptional(markers.MakeDefinition("groupName", markers.DescribesPackage, "")). WithHelp(markers.SimpleHelp("CRD", "specifies the API group name for this package.")), must(markers.MakeDefinition("versionName", markers.DescribesPackage, "")). diff --git a/pkg/crd/markers/register.go b/pkg/crd/markers/register.go index 5988a1b5b..b5a2760b0 100644 --- a/pkg/crd/markers/register.go +++ b/pkg/crd/markers/register.go @@ -17,6 +17,7 @@ limitations under the License. package markers import ( + "fmt" "reflect" "sigs.k8s.io/controller-tools/pkg/markers" @@ -56,6 +57,19 @@ func must(def *markers.Definition, err error) *definitionWithHelp { } } +func mustOptional(def *markers.Definition, err error) *definitionWithHelp { + def = markers.Must(def, err) + if !def.AnonymousField() { + def = markers.Must(def, fmt.Errorf("not an anonymous field: %v", def)) + } + field := def.Fields[""] + field.Optional = true + def.Fields[""] = field + return &definitionWithHelp{ + Definition: def, + } +} + // AllDefinitions contains all marker definitions for this package. var AllDefinitions []*definitionWithHelp