mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 13:55:41 +00:00
make informer-gen respect the resourceName tag
This commit is contained in:
parent
e689d515f7
commit
7e9c09caf5
@ -27,6 +27,7 @@ import (
|
|||||||
"k8s.io/code-generator/cmd/client-gen/generators/util"
|
"k8s.io/code-generator/cmd/client-gen/generators/util"
|
||||||
"k8s.io/code-generator/cmd/client-gen/path"
|
"k8s.io/code-generator/cmd/client-gen/path"
|
||||||
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
||||||
|
codegennamer "k8s.io/code-generator/pkg/namer"
|
||||||
"k8s.io/gengo/args"
|
"k8s.io/gengo/args"
|
||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
@ -101,7 +102,7 @@ func NameSystems() namer.NameSystems {
|
|||||||
"publicPlural": publicPluralNamer,
|
"publicPlural": publicPluralNamer,
|
||||||
"privatePlural": privatePluralNamer,
|
"privatePlural": privatePluralNamer,
|
||||||
"allLowercasePlural": lowercaseNamer,
|
"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)
|
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,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
|
||||||
|
codegennamer "k8s.io/code-generator/pkg/namer"
|
||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
"k8s.io/gengo/types"
|
"k8s.io/gengo/types"
|
||||||
@ -56,6 +57,7 @@ func (g *genericGenerator) Namers(c *generator.Context) namer.NameSystems {
|
|||||||
"raw": namer.NewRawNamer(g.outputPackage, g.imports),
|
"raw": namer.NewRawNamer(g.outputPackage, g.imports),
|
||||||
"allLowercasePlural": namer.NewAllLowercasePluralNamer(pluralExceptions),
|
"allLowercasePlural": namer.NewAllLowercasePluralNamer(pluralExceptions),
|
||||||
"publicPlural": namer.NewPublicPluralNamer(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 -}}
|
{{range $version := .Versions -}}
|
||||||
// Group={{$group.Name}}, Version={{.Name}}
|
// Group={{$group.Name}}, Version={{.Name}}
|
||||||
{{range .Resources -}}
|
{{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
|
return &genericInformer{resource: resource.GroupResource(), informer: f.{{$GroupGoName}}().{{$version.GoName}}().{{.|publicPlural}}().Informer()}, nil
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -14,12 +14,38 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package generators
|
package namer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"k8s.io/gengo/namer"
|
||||||
"k8s.io/gengo/types"
|
"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
|
// extractTag gets the comment-tags for the key. If the tag did not exist, it
|
||||||
// returns the empty string.
|
// returns the empty string.
|
||||||
func extractTag(key string, lines []string) string {
|
func extractTag(key string, lines []string) string {
|
Loading…
Reference in New Issue
Block a user