From b23df5efb6eb791fca9f7865c5d1ee4f11343899 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Fri, 5 Apr 2024 13:17:08 +0200 Subject: [PATCH] Update applyconfig-gen for pacakges where group and dir differ in name It is possible that package paths might differ from the group name, see https://github.com/openshift/api/blob/master/operatorcontrolplane/v1alpha1/doc.go notice that pacakge name is `operatorcontrolplane` whereas the group is `controlplane.operator...`. This confuses the generator since it tries to extrapolate the name of the package based on the group name. Whereas the ImportTracker can properly recognize the import path. This leads to cyclical imports in packages where the group name is different from the actual import path. Kubernetes-commit: 4d1dd9cd07912190cffc68c54c17395391c8b4d1 --- cmd/applyconfiguration-gen/generators/applyconfiguration.go | 6 +++--- cmd/applyconfiguration-gen/generators/targets.go | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/applyconfiguration-gen/generators/applyconfiguration.go b/cmd/applyconfiguration-gen/generators/applyconfiguration.go index eb885a59..ee4743aa 100644 --- a/cmd/applyconfiguration-gen/generators/applyconfiguration.go +++ b/cmd/applyconfiguration-gen/generators/applyconfiguration.go @@ -35,6 +35,7 @@ type applyConfigurationGenerator struct { generator.GoGenerator // outPkgBase is the base package, under which the "internal" and GV-specific subdirs live outPkgBase string // must be a Go import-path + localPkg string groupVersion clientgentypes.GroupVersion applyConfig applyConfig imports namer.ImportTracker @@ -49,9 +50,8 @@ func (g *applyConfigurationGenerator) Filter(_ *generator.Context, t *types.Type } func (g *applyConfigurationGenerator) Namers(*generator.Context) namer.NameSystems { - localPkg := path.Join(g.outPkgBase, g.groupVersion.Group.PackageName(), g.groupVersion.Version.PackageName()) return namer.NameSystems{ - "raw": namer.NewRawNamer(localPkg, g.imports), + "raw": namer.NewRawNamer(g.localPkg, g.imports), "singularKind": namer.NewPublicNamer(0), } } @@ -336,7 +336,7 @@ func (b *$.ApplyConfig.ApplyConfiguration|public$) ensure$.MemberType.Elem|publi var clientgenTypeConstructorNamespaced = ` // $.ApplyConfig.Type|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with -// apply. +// apply. func $.ApplyConfig.Type|public$(name, namespace string) *$.ApplyConfig.ApplyConfiguration|public$ { b := &$.ApplyConfig.ApplyConfiguration|public${} b.WithName(name) diff --git a/cmd/applyconfiguration-gen/generators/targets.go b/cmd/applyconfiguration-gen/generators/targets.go index 7fc624d6..debab90e 100644 --- a/cmd/applyconfiguration-gen/generators/targets.go +++ b/cmd/applyconfiguration-gen/generators/targets.go @@ -185,6 +185,7 @@ func targetForApplyConfigurationsPackage(outputDirBase, outputPkgBase, pkgSubdir OutputFilename: strings.ToLower(toGenerate.Type.Name.Name) + ".go", }, outPkgBase: outputPkgBase, + localPkg: outputPkg, groupVersion: gv, applyConfig: toGenerate, imports: generator.NewImportTracker(),