Skip to content

Commit

Permalink
Change marker to use ac instead of object
Browse files Browse the repository at this point in the history
  • Loading branch information
Jefftree committed Apr 22, 2021
1 parent 01a5367 commit 02d8008
Show file tree
Hide file tree
Showing 10 changed files with 179 additions and 251 deletions.
47 changes: 43 additions & 4 deletions pkg/applyconfigurations/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@ import (
// Based on deepcopy gen but with legacy marker support removed.

var (
enablePkgMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:generate", markers.DescribesPackage, false))
enableTypeMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:generate", markers.DescribesType, false))
isObjectMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:root", markers.DescribesType, false))

enablePkgMarker = markers.Must(markers.MakeDefinition("kubebuilder:ac:generate", markers.DescribesPackage, false))
enableTypeMarker = markers.Must(markers.MakeDefinition("kubebuilder:ac:generate", markers.DescribesType, false))
isObjectMarker = markers.Must(markers.MakeDefinition("kubebuilder:ac:root", markers.DescribesType, false))
)

// +controllertools:marker:generateHelp
Expand Down Expand Up @@ -138,7 +139,6 @@ func (d Generator) Generate(ctx *genall.GenerationContext) error {
}

var pkgList []*loader.Package
visited := make(map[string]*loader.Package)

//TODO|jefftree: This might cause problems if multiple packages are provided
crdRoot := ctx.Roots[0]
Expand All @@ -147,6 +147,7 @@ func (d Generator) Generate(ctx *genall.GenerationContext) error {
pkgList = append(pkgList, root)
}

visited := make(map[string]*loader.Package)
for len(pkgList) != 0 {
pkg := pkgList[0]
pkgList = pkgList[1:]
Expand Down Expand Up @@ -176,6 +177,7 @@ func (d Generator) Generate(ctx *genall.GenerationContext) error {
baseImportPath: crdRoot.PkgPath,
importPathSuffix: "ac",
baseFilePath: filepath.Dir(crdRoot.CompiledGoFiles[0]),
importMapping: map[string]string{"k8s.io/apimachinery/pkg/apis/meta/v1": "k8s.io/client-go/applyconfigurations/meta/v1", "k8s.io/api/core/v1": "k8s.io/client-go/applyconfigurations/core/v1"},
}

// universe.baseImportPath = "k8s.io/client-go/applyconfigurations"
Expand Down Expand Up @@ -245,6 +247,43 @@ type Universe struct {
baseImportPath string
importPathSuffix string
baseFilePath string
importMapping map[string]string
}

func (u *Universe) existingApplyConfig(typeInfo *types.Named, pkgPath string) (string, bool) {
if path, ok := u.importMapping[pkgPath]; ok {
return path, true
}
return "", false
}

func (u *Universe) IsApplyConfigGenerated(typeInfo *types.Named, pkgPath string) bool {
exists := false
for _, b := range u.eligibleTypes {
if typeInfo.Obj().Name() == "ObjectMeta" || typeInfo.Obj().Name() == "TypeMeta" || typeInfo.Obj().Name() == "ListMeta" {
exists = false
break
}
if b == typeInfo {
exists = true
break
}
}
return exists
}

func (u *Universe) GetApplyConfigPath(typeInfo *types.Named, pkgPath string) (string, bool) {
if !u.IsApplyConfigGenerated(typeInfo, pkgPath) {
return pkgPath, false
}

if path, ok := u.existingApplyConfig(typeInfo, pkgPath); ok {
return path, ok
}

path := loader.NonVendorPath(pkgPath)
path = groupAndPackageVersion(path)
return u.baseImportPath + "/" + u.importPathSuffix + "/" + path, true
}

// generateForPackage generates apply configuration implementations for
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 02d8008

Please sign in to comment.