mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-11-02 14:51:58 +00:00
First use of new deep-copy generator.
This commit is contained in:
@@ -18,7 +18,6 @@ package generators
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
@@ -69,9 +68,7 @@ func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Pac
|
||||
PackagePath: inputDir,
|
||||
HeaderText: append(boilerplate, []byte(
|
||||
`
|
||||
// This file was autogenerated by the command:
|
||||
// $ `+strings.Join(os.Args, " ")+`
|
||||
// Do not edit it manually!
|
||||
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
|
||||
|
||||
`)...),
|
||||
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
|
||||
@@ -157,7 +154,26 @@ func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool {
|
||||
return false
|
||||
}
|
||||
// TODO: Consider generating functions for other kinds too.
|
||||
return t.Kind == types.Struct
|
||||
if t.Kind != types.Struct {
|
||||
return false
|
||||
}
|
||||
// TODO: This should be removed once we start generating public DeepCopy
|
||||
// functions per directory.
|
||||
if t.Name.Package != g.targetPackage {
|
||||
// We won't be able to access private fields.
|
||||
// Thus, this type cannot have private fields.
|
||||
for _, member := range t.Members {
|
||||
if strings.ToLower(member.Name[:1]) == member.Name[:1] {
|
||||
return false
|
||||
}
|
||||
// TODO: This is a temporary hack, to make avoid generating function
|
||||
// for conversion.Equalities. We should get rid of it.
|
||||
if member.Embedded {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (g *genDeepCopy) isOtherPackage(pkg string) bool {
|
||||
@@ -189,7 +205,11 @@ func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
|
||||
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
sw.Do("func init() {\n", nil)
|
||||
sw.Do("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
if g.targetPackage == apiPackagePath {
|
||||
sw.Do("if err := Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
} else {
|
||||
sw.Do("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
}
|
||||
for _, t := range g.typesForInit {
|
||||
sw.Do("deepCopy_$.|public$,\n", t)
|
||||
}
|
||||
@@ -203,6 +223,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
|
||||
|
||||
// GenerateType makes the body of a file implementing a set for type t.
|
||||
func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
glog.Errorf("--> %v", t)
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
sw.Do("func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {\n", t)
|
||||
g.generateFor(t, sw)
|
||||
|
||||
@@ -31,6 +31,11 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults. These are Kubernetes specific input locations.
|
||||
arguments.InputDirs = []string{
|
||||
"k8s.io/kubernetes/pkg/api",
|
||||
}
|
||||
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
generators.DefaultNameSystem(),
|
||||
@@ -38,4 +43,5 @@ func main() {
|
||||
); err != nil {
|
||||
glog.Fatalf("Error: %v", err)
|
||||
}
|
||||
glog.Info("Completed successfully.")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user