mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-14 13:45:06 +00:00
code-generator: unify generator main.go files
This commit is contained in:
@@ -104,7 +104,7 @@ func DefaultNameSystem() string {
|
||||
return "public"
|
||||
}
|
||||
|
||||
func generatedBy(customArgs clientgenargs.Args) string {
|
||||
func generatedBy(customArgs *clientgenargs.Args) string {
|
||||
if len(customArgs.CmdArgs) != 0 {
|
||||
return fmt.Sprintf("\n// This package is generated by client-gen with custom arguments.\n\n")
|
||||
}
|
||||
@@ -175,7 +175,7 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
|
||||
}
|
||||
}
|
||||
|
||||
func packageForClientset(customArgs clientgenargs.Args, clientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
func packageForClientset(customArgs *clientgenargs.Args, clientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
return &generator.DefaultPackage{
|
||||
PackageName: customArgs.ClientsetName,
|
||||
PackagePath: clientsetPackage,
|
||||
@@ -206,7 +206,7 @@ func packageForClientset(customArgs clientgenargs.Args, clientsetPackage string,
|
||||
}
|
||||
}
|
||||
|
||||
func packageForScheme(customArgs clientgenargs.Args, clientsetPackage string, srcTreePath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
func packageForScheme(customArgs *clientgenargs.Args, clientsetPackage string, srcTreePath string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
schemePackage := filepath.Join(clientsetPackage, "scheme")
|
||||
|
||||
// create runtime.Registry for internal client because it has to know about group versions
|
||||
@@ -312,13 +312,13 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
||||
glog.Fatalf("Failed loading boilerplate: %v", err)
|
||||
}
|
||||
|
||||
customArgs, ok := arguments.CustomArgs.(clientgenargs.Args)
|
||||
customArgs, ok := arguments.CustomArgs.(*clientgenargs.Args)
|
||||
if !ok {
|
||||
glog.Fatalf("cannot convert arguments.CustomArgs to clientgenargs.Args")
|
||||
}
|
||||
includedTypesOverrides := customArgs.IncludedTypesOverrides
|
||||
|
||||
applyGroupOverrides(context.Universe, &customArgs)
|
||||
applyGroupOverrides(context.Universe, customArgs)
|
||||
|
||||
generatedBy := generatedBy(customArgs)
|
||||
|
||||
|
@@ -83,7 +83,7 @@ func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
|
||||
}
|
||||
}
|
||||
|
||||
func PackageForClientset(customArgs clientgenargs.Args, fakeClientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
func PackageForClientset(customArgs *clientgenargs.Args, fakeClientsetPackage string, boilerplate []byte, generatedBy string) generator.Package {
|
||||
return &generator.DefaultPackage{
|
||||
// TODO: we'll generate fake clientset for different release in the future.
|
||||
// Package name and path are hard coded for now.
|
||||
|
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
@@ -29,11 +30,11 @@ import (
|
||||
"k8s.io/gengo/args"
|
||||
|
||||
"github.com/golang/glog"
|
||||
flag "github.com/spf13/pflag"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
var (
|
||||
inputVersions = flag.StringSlice("input", []string{
|
||||
inputVersions = pflag.StringSlice("input", []string{
|
||||
"api/",
|
||||
"admissionregistration/",
|
||||
"authentication/",
|
||||
@@ -50,13 +51,13 @@ var (
|
||||
"settings/",
|
||||
"networking/",
|
||||
}, "group/versions that client-gen will generate clients for. At most one version per group is allowed. Specified in the format \"group1/version1,group2/version2...\".")
|
||||
includedTypesOverrides = flag.StringSlice("included-types-overrides", []string{}, "list of group/version/type for which client should be generated. By default, client is generated for all types which have genclient in types.go. This overrides that. For each groupVersion in this list, only the types mentioned here will be included. The default check of genclient will be used for other group versions.")
|
||||
basePath = flag.String("input-base", "k8s.io/kubernetes/pkg/apis", "base path to look for the api group.")
|
||||
clientsetName = flag.StringP("clientset-name", "n", "internalclientset", "the name of the generated clientset package.")
|
||||
clientsetAPIPath = flag.StringP("clientset-api-path", "", "", "the value of default API path.")
|
||||
clientsetPath = flag.String("clientset-path", "k8s.io/kubernetes/pkg/client/clientset_generated/", "the generated clientset will be output to <clientset-path>/<clientset-name>.")
|
||||
clientsetOnly = flag.Bool("clientset-only", false, "when set, client-gen only generates the clientset shell, without generating the individual typed clients")
|
||||
fakeClient = flag.Bool("fake-clientset", true, "when set, client-gen will generate the fake clientset that can be used in tests")
|
||||
includedTypesOverrides = pflag.StringSlice("included-types-overrides", []string{}, "list of group/version/type for which client should be generated. By default, client is generated for all types which have genclient in types.go. This overrides that. For each groupVersion in this list, only the types mentioned here will be included. The default check of genclient will be used for other group versions.")
|
||||
basePath = pflag.String("input-base", "k8s.io/kubernetes/pkg/apis", "base path to look for the api group.")
|
||||
clientsetName = pflag.StringP("clientset-name", "n", "internalclientset", "the name of the generated clientset package.")
|
||||
clientsetAPIPath = pflag.StringP("clientset-api-path", "", "", "the value of default API path.")
|
||||
clientsetPath = pflag.String("clientset-path", "k8s.io/kubernetes/pkg/client/clientset_generated/", "the generated clientset will be output to <clientset-path>/<clientset-name>.")
|
||||
clientsetOnly = pflag.Bool("clientset-only", false, "when set, client-gen only generates the clientset shell, without generating the individual typed clients")
|
||||
fakeClient = pflag.Bool("fake-clientset", true, "when set, client-gen will generate the fake clientset that can be used in tests")
|
||||
)
|
||||
|
||||
func versionToPath(gvPath string, group string, version string) (path string) {
|
||||
@@ -151,16 +152,7 @@ func parseIncludedTypesOverrides() (map[types.GroupVersion][]string, error) {
|
||||
}
|
||||
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
flag.Parse()
|
||||
var cmdArgs string
|
||||
flag.VisitAll(func(f *flag.Flag) {
|
||||
if !f.Changed || f.Name == "verify-only" {
|
||||
return
|
||||
}
|
||||
cmdArgs = cmdArgs + fmt.Sprintf("--%s=%s ", f.Name, f.Value)
|
||||
})
|
||||
arguments := args.Default().WithoutDefaultFlagParsing()
|
||||
|
||||
dependencies := []string{
|
||||
"k8s.io/apimachinery/pkg/fields",
|
||||
@@ -169,6 +161,25 @@ func main() {
|
||||
"k8s.io/apimachinery/pkg/apimachinery/registered",
|
||||
}
|
||||
|
||||
customArgs := clientgenargs.Args{
|
||||
ClientsetName: *clientsetName,
|
||||
ClientsetAPIPath: *clientsetAPIPath,
|
||||
ClientsetOutputPath: *clientsetPath,
|
||||
ClientsetOnly: *clientsetOnly,
|
||||
FakeClient: *fakeClient,
|
||||
}
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.CustomArgs = customArgs
|
||||
|
||||
// Register default flags. We do this manually here because we have to override InputDirs below after additional
|
||||
// input dirs are parse fromt he command-line.
|
||||
arguments.AddFlags(pflag.CommandLine)
|
||||
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
|
||||
pflag.Parse()
|
||||
|
||||
// Post-parse arguments.
|
||||
inputPath, groups, gvToPath, err := parseInputVersions()
|
||||
if err != nil {
|
||||
glog.Fatalf("Error: %v", err)
|
||||
@@ -178,21 +189,22 @@ func main() {
|
||||
glog.Fatalf("Unexpected error: %v", err)
|
||||
}
|
||||
glog.V(3).Infof("going to generate clientset from these input paths: %v", inputPath)
|
||||
arguments.InputDirs = append(inputPath, dependencies...)
|
||||
|
||||
arguments.CustomArgs = clientgenargs.Args{
|
||||
Groups: groups,
|
||||
GroupVersionToInputPath: gvToPath,
|
||||
ClientsetName: *clientsetName,
|
||||
ClientsetAPIPath: *clientsetAPIPath,
|
||||
ClientsetOutputPath: *clientsetPath,
|
||||
ClientsetOnly: *clientsetOnly,
|
||||
FakeClient: *fakeClient,
|
||||
CmdArgs: cmdArgs,
|
||||
IncludedTypesOverrides: includedTypesOverrides,
|
||||
// Override
|
||||
arguments.InputDirs = append(arguments.InputDirs, append(inputPath, dependencies...)...)
|
||||
customArgs.Groups = groups
|
||||
customArgs.GroupVersionToInputPath = gvToPath
|
||||
customArgs.IncludedTypesOverrides = includedTypesOverrides
|
||||
|
||||
// Derive customArgs.CmdArgs
|
||||
var cmdArgs string
|
||||
pflag.VisitAll(func(f *pflag.Flag) {
|
||||
if !f.Changed || f.Name == "verify-only" {
|
||||
return
|
||||
}
|
||||
|
||||
glog.V(3).Infof("==arguments: %v\n", arguments)
|
||||
cmdArgs = cmdArgs + fmt.Sprintf("--%s=%s ", f.Name, f.Value)
|
||||
})
|
||||
customArgs.CmdArgs = cmdArgs
|
||||
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
|
@@ -47,10 +47,6 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults.
|
||||
arguments.OutputFileBaseName = "conversion_generated"
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
|
||||
// Custom args.
|
||||
// TODO: make callers pass this in. It is too opaque here, and any use of
|
||||
// the flag that DOESN'T include these is broken.
|
||||
@@ -69,6 +65,10 @@ func main() {
|
||||
"Comma-separated list of import paths which are considered, after tag-specified peers, for conversions.")
|
||||
pflag.CommandLine.BoolVar(&customArgs.SkipUnsafe, "skip-unsafe", customArgs.SkipUnsafe,
|
||||
"If true, will not generate code using unsafe pointer conversions; resulting code may be slower.")
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputFileBaseName = "conversion_generated"
|
||||
arguments.CustomArgs = customArgs
|
||||
|
||||
// Run it.
|
||||
|
@@ -60,14 +60,14 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults.
|
||||
arguments.OutputFileBaseName = "deepcopy_generated"
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
|
||||
// Custom args.
|
||||
customArgs := &generators.CustomArgs{}
|
||||
pflag.CommandLine.StringSliceVar(&customArgs.BoundingDirs, "bounding-dirs", customArgs.BoundingDirs,
|
||||
"Comma-separated list of import paths which bound the types for which deep-copies will be generated.")
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputFileBaseName = "deepcopy_generated"
|
||||
arguments.CustomArgs = customArgs
|
||||
|
||||
// Run it.
|
||||
|
@@ -54,16 +54,16 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults.
|
||||
arguments.OutputFileBaseName = "zz_generated.defaults"
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
|
||||
// Custom args.
|
||||
customArgs := &generators.CustomArgs{
|
||||
ExtraPeerDirs: []string{},
|
||||
}
|
||||
pflag.CommandLine.StringSliceVar(&customArgs.ExtraPeerDirs, "extra-peer-dirs", customArgs.ExtraPeerDirs,
|
||||
"Comma-separated list of import paths which are considered, after tag-specified peers, for conversions.")
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputFileBaseName = "zz_generated.defaults"
|
||||
arguments.CustomArgs = customArgs
|
||||
|
||||
// Run it.
|
||||
|
@@ -68,15 +68,13 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults. These are Kubernetes specific input and output
|
||||
// locations.
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.InputDirs = []string{
|
||||
"k8s.io/kubernetes/pkg/...",
|
||||
"k8s.io/kubernetes/cmd/...",
|
||||
"k8s.io/kubernetes/plugin/...",
|
||||
}
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
// arguments.VerifyOnly = true
|
||||
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
|
@@ -27,22 +27,22 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Custom arguments.
|
||||
customArgs := &generators.CustomArgs{
|
||||
VersionedClientSetPackage: "k8s.io/kubernetes/pkg/client/clientset_generated/clientset",
|
||||
InternalClientSetPackage: "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset",
|
||||
ListersPackage: "k8s.io/kubernetes/pkg/client/listers",
|
||||
SingleDirectory: false,
|
||||
}
|
||||
arguments := &args.GeneratorArgs{
|
||||
OutputBase: args.DefaultSourceTree(),
|
||||
GoHeaderFilePath: filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"),
|
||||
GeneratedBuildTag: "ignore_autogenerated",
|
||||
OutputPackagePath: "k8s.io/kubernetes/pkg/client/informers/informers_generated",
|
||||
CustomArgs: customArgs,
|
||||
}
|
||||
arguments.AddFlags(pflag.CommandLine)
|
||||
customArgs.AddFlags(pflag.CommandLine)
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated"
|
||||
arguments.CustomArgs = customArgs
|
||||
|
||||
// Run it.
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
|
@@ -23,17 +23,14 @@ import (
|
||||
"k8s.io/gengo/args"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
func main() {
|
||||
arguments := &args.GeneratorArgs{
|
||||
OutputBase: args.DefaultSourceTree(),
|
||||
GoHeaderFilePath: filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"),
|
||||
GeneratedBuildTag: "ignore_autogenerated",
|
||||
OutputPackagePath: "k8s.io/kubernetes/pkg/client/listers",
|
||||
}
|
||||
arguments.AddFlags(pflag.CommandLine)
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers"
|
||||
|
||||
// Run it.
|
||||
if err := arguments.Execute(
|
||||
|
@@ -32,8 +32,8 @@ func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults.
|
||||
arguments.OutputFileBaseName = "openapi_generated"
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.OutputFileBaseName = "openapi_generated"
|
||||
|
||||
// Run it.
|
||||
if err := arguments.Execute(
|
||||
|
@@ -37,11 +37,10 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults. These are Kubernetes specific input and output
|
||||
// locations.
|
||||
// Override defaults.
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"}
|
||||
arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets"
|
||||
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
|
||||
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
|
Reference in New Issue
Block a user