code-generator: unify generator main.go files

This commit is contained in:
Dr. Stefan Schimanski
2017-09-28 11:38:08 +02:00
parent e1b4613291
commit c1062de2ff
11 changed files with 80 additions and 74 deletions

View File

@@ -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)

View File

@@ -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.

View File

@@ -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(),

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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(),

View File

@@ -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(),

View File

@@ -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(

View File

@@ -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(

View File

@@ -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(),