From 7e9c09caf5d8a7c394cc5dd356b3261f6657991b Mon Sep 17 00:00:00 2001 From: mrIncompetent Date: Mon, 3 Dec 2018 12:21:56 +0100 Subject: [PATCH 1/2] make informer-gen respect the resourceName tag --- .../client-gen/generators/client_generator.go | 27 ++---------------- .../cmd/informer-gen/generators/generic.go | 4 ++- .../tags.go => pkg/namer/tag-override.go} | 28 ++++++++++++++++++- 3 files changed, 32 insertions(+), 27 deletions(-) rename staging/src/k8s.io/code-generator/{cmd/client-gen/generators/tags.go => pkg/namer/tag-override.go} (50%) diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go index ee6ebbcf09..18980744f0 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go @@ -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, - } -} diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/generic.go b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/generic.go index 54632de053..5ee918f17e 100644 --- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/generic.go +++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/generic.go @@ -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}} diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/tags.go b/staging/src/k8s.io/code-generator/pkg/namer/tag-override.go similarity index 50% rename from staging/src/k8s.io/code-generator/cmd/client-gen/generators/tags.go rename to staging/src/k8s.io/code-generator/pkg/namer/tag-override.go index b004081036..fd8c3a8553 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/tags.go +++ b/staging/src/k8s.io/code-generator/pkg/namer/tag-override.go @@ -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 { From 574816dff5d374642ccaf4a2e7c7f2afb1250392 Mon Sep 17 00:00:00 2001 From: mrIncompetent Date: Mon, 3 Dec 2018 12:38:02 +0100 Subject: [PATCH 2/2] update bazel --- staging/src/BUILD | 1 + .../cmd/client-gen/generators/BUILD | 2 +- .../cmd/informer-gen/generators/BUILD | 1 + .../src/k8s.io/code-generator/pkg/namer/BUILD | 27 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 staging/src/k8s.io/code-generator/pkg/namer/BUILD diff --git a/staging/src/BUILD b/staging/src/BUILD index 07cb474caf..eb8bba577c 100644 --- a/staging/src/BUILD +++ b/staging/src/BUILD @@ -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", diff --git a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD index cf386272f1..36dcab0604 100644 --- a/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD +++ b/staging/src/k8s.io/code-generator/cmd/client-gen/generators/BUILD @@ -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", diff --git a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/BUILD b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/BUILD index 9902386d81..1717edd83f 100644 --- a/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/BUILD +++ b/staging/src/k8s.io/code-generator/cmd/informer-gen/generators/BUILD @@ -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", diff --git a/staging/src/k8s.io/code-generator/pkg/namer/BUILD b/staging/src/k8s.io/code-generator/pkg/namer/BUILD new file mode 100644 index 0000000000..cbed26a69b --- /dev/null +++ b/staging/src/k8s.io/code-generator/pkg/namer/BUILD @@ -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"], +)