mirror of https://github.com/k3s-io/k3s
Merge pull request #71657 from mrIncompetent/informer-gen/respect-resourceName-tag
make informer-gen respect the resourceName tagpull/564/head
commit
0351853ea1
|
@ -204,6 +204,7 @@ filegroup(
|
|||
"//staging/src/k8s.io/code-generator/cmd/register-gen:all-srcs",
|
||||
"//staging/src/k8s.io/code-generator/cmd/set-gen:all-srcs",
|
||||
"//staging/src/k8s.io/code-generator/hack:all-srcs",
|
||||
"//staging/src/k8s.io/code-generator/pkg/namer:all-srcs",
|
||||
"//staging/src/k8s.io/code-generator/pkg/util:all-srcs",
|
||||
"//staging/src/k8s.io/code-generator/third_party/forked/golang/reflect:all-srcs",
|
||||
"//staging/src/k8s.io/csi-api/pkg/apis/csi/v1alpha1:all-srcs",
|
||||
|
|
|
@ -13,7 +13,6 @@ go_library(
|
|||
"generator_for_expansion.go",
|
||||
"generator_for_group.go",
|
||||
"generator_for_type.go",
|
||||
"tags.go",
|
||||
],
|
||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/code-generator/cmd/client-gen/generators",
|
||||
importpath = "k8s.io/code-generator/cmd/client-gen/generators",
|
||||
|
@ -24,6 +23,7 @@ go_library(
|
|||
"//staging/src/k8s.io/code-generator/cmd/client-gen/generators/util:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/cmd/client-gen/path:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/cmd/client-gen/types:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/pkg/namer:go_default_library",
|
||||
"//vendor/k8s.io/gengo/args:go_default_library",
|
||||
"//vendor/k8s.io/gengo/generator:go_default_library",
|
||||
"//vendor/k8s.io/gengo/namer:go_default_library",
|
||||
|
|
|
@ -27,6 +27,7 @@ import (
|
|||
"k8s.io/code-generator/cmd/client-gen/generators/util"
|
||||
"k8s.io/code-generator/cmd/client-gen/path"
|
||||
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
||||
codegennamer "k8s.io/code-generator/pkg/namer"
|
||||
"k8s.io/gengo/args"
|
||||
"k8s.io/gengo/generator"
|
||||
"k8s.io/gengo/namer"
|
||||
|
@ -101,7 +102,7 @@ func NameSystems() namer.NameSystems {
|
|||
"publicPlural": publicPluralNamer,
|
||||
"privatePlural": privatePluralNamer,
|
||||
"allLowercasePlural": lowercaseNamer,
|
||||
"resource": NewTagOverrideNamer("resourceName", lowercaseNamer),
|
||||
"resource": codegennamer.NewTagOverrideNamer("resourceName", lowercaseNamer),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -400,27 +401,3 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||
|
||||
return generator.Packages(packageList)
|
||||
}
|
||||
|
||||
// tagOverrideNamer is a namer which pulls names from a given tag, if specified,
|
||||
// and otherwise falls back to a different namer.
|
||||
type tagOverrideNamer struct {
|
||||
tagName string
|
||||
fallback namer.Namer
|
||||
}
|
||||
|
||||
func (n *tagOverrideNamer) Name(t *types.Type) string {
|
||||
if nameOverride := extractTag(n.tagName, append(t.SecondClosestCommentLines, t.CommentLines...)); nameOverride != "" {
|
||||
return nameOverride
|
||||
}
|
||||
|
||||
return n.fallback.Name(t)
|
||||
}
|
||||
|
||||
// NewTagOverrideNamer creates a namer.Namer which uses the contents of the given tag as
|
||||
// the name, or falls back to another Namer if the tag is not present.
|
||||
func NewTagOverrideNamer(tagName string, fallback namer.Namer) namer.Namer {
|
||||
return &tagOverrideNamer{
|
||||
tagName: tagName,
|
||||
fallback: fallback,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ go_library(
|
|||
"//staging/src/k8s.io/code-generator/cmd/client-gen/generators/util:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/cmd/client-gen/types:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/cmd/informer-gen/args:go_default_library",
|
||||
"//staging/src/k8s.io/code-generator/pkg/namer:go_default_library",
|
||||
"//vendor/k8s.io/gengo/args:go_default_library",
|
||||
"//vendor/k8s.io/gengo/generator:go_default_library",
|
||||
"//vendor/k8s.io/gengo/namer:go_default_library",
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"strings"
|
||||
|
||||
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
||||
codegennamer "k8s.io/code-generator/pkg/namer"
|
||||
"k8s.io/gengo/generator"
|
||||
"k8s.io/gengo/namer"
|
||||
"k8s.io/gengo/types"
|
||||
|
@ -56,6 +57,7 @@ func (g *genericGenerator) Namers(c *generator.Context) namer.NameSystems {
|
|||
"raw": namer.NewRawNamer(g.outputPackage, g.imports),
|
||||
"allLowercasePlural": namer.NewAllLowercasePluralNamer(pluralExceptions),
|
||||
"publicPlural": namer.NewPublicPluralNamer(pluralExceptions),
|
||||
"resource": codegennamer.NewTagOverrideNamer("resourceName", namer.NewAllLowercasePluralNamer(pluralExceptions)),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +170,7 @@ func (f *sharedInformerFactory) ForResource(resource {{.schemaGroupVersionResour
|
|||
{{range $version := .Versions -}}
|
||||
// Group={{$group.Name}}, Version={{.Name}}
|
||||
{{range .Resources -}}
|
||||
case {{index $.schemeGVs $version|raw}}.WithResource("{{.|allLowercasePlural}}"):
|
||||
case {{index $.schemeGVs $version|raw}}.WithResource("{{.|resource}}"):
|
||||
return &genericInformer{resource: resource.GroupResource(), informer: f.{{$GroupGoName}}().{{$version.GoName}}().{{.|publicPlural}}().Informer()}, nil
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["tag-override.go"],
|
||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/code-generator/pkg/namer",
|
||||
importpath = "k8s.io/code-generator/pkg/namer",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/k8s.io/gengo/namer:go_default_library",
|
||||
"//vendor/k8s.io/gengo/types:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
|
@ -14,12 +14,38 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package generators
|
||||
package namer
|
||||
|
||||
import (
|
||||
"k8s.io/gengo/namer"
|
||||
"k8s.io/gengo/types"
|
||||
)
|
||||
|
||||
// TagOverrideNamer is a namer which pulls names from a given tag, if specified,
|
||||
// and otherwise falls back to a different namer.
|
||||
type TagOverrideNamer struct {
|
||||
tagName string
|
||||
fallback namer.Namer
|
||||
}
|
||||
|
||||
// Name returns the tag value if it exists. It no tag was found the fallback namer will be used
|
||||
func (n *TagOverrideNamer) Name(t *types.Type) string {
|
||||
if nameOverride := extractTag(n.tagName, append(t.SecondClosestCommentLines, t.CommentLines...)); nameOverride != "" {
|
||||
return nameOverride
|
||||
}
|
||||
|
||||
return n.fallback.Name(t)
|
||||
}
|
||||
|
||||
// NewTagOverrideNamer creates a namer.Namer which uses the contents of the given tag as
|
||||
// the name, or falls back to another Namer if the tag is not present.
|
||||
func NewTagOverrideNamer(tagName string, fallback namer.Namer) namer.Namer {
|
||||
return &TagOverrideNamer{
|
||||
tagName: tagName,
|
||||
fallback: fallback,
|
||||
}
|
||||
}
|
||||
|
||||
// extractTag gets the comment-tags for the key. If the tag did not exist, it
|
||||
// returns the empty string.
|
||||
func extractTag(key string, lines []string) string {
|
Loading…
Reference in New Issue