From 027710baf5ba8aab0c3b9bda62d264c52b33a568 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Tue, 5 Apr 2016 14:45:45 -0700 Subject: [PATCH] client-gen now generates the "generated by" comment in doc.go --- .../client-gen/generators/client_generator.go | 35 ++++++++++++------- .../generators/fake/fake_client_generator.go | 13 ++++--- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/cmd/libs/go2idl/client-gen/generators/client_generator.go b/cmd/libs/go2idl/client-gen/generators/client_generator.go index 698484323d2..da94d8ada93 100644 --- a/cmd/libs/go2idl/client-gen/generators/client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/client_generator.go @@ -56,14 +56,22 @@ func DefaultNameSystem() string { return "public" } -func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, boilerplate []byte) generator.Package { +func generatedBy(customArgs clientgenargs.Args) string { + if len(customArgs.CmdArgs) != 0 { + return fmt.Sprintf("\n// This package is generated by client-gen with arguments: %s\n\n", customArgs.CmdArgs) + } + return fmt.Sprintf("\n// This package is generated by client-gen with the default arguments.\n\n") +} + +func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, boilerplate []byte, generatedBy string) generator.Package { outputPackagePath := filepath.Join(packageBasePath, gv.Group, gv.Version) return &generator.DefaultPackage{ PackageName: gv.Version, PackagePath: outputPackagePath, HeaderText: boilerplate, PackageDocumentation: []byte( - `// Package unversioned has the automatically generated clients for unversioned resources. + generatedBy + + `// This package has the automatically generated typed clients. `), // GeneratorFunc returns a list of generators. Each generator makes a // single file. @@ -115,18 +123,22 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag } } -func packageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte) generator.Package { +func packageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte, generatedBy string) generator.Package { return &generator.DefaultPackage{ PackageName: customArgs.ClientsetName, PackagePath: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName), HeaderText: boilerplate, PackageDocumentation: []byte( - `// This package has the automatically generated clientset. + generatedBy + + `// This package has the automatically generated clientset. `), // GeneratorFunc returns a list of generators. Each generator generates a // single file. GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{ + // Always generate a "doc.go" file. + generator.DefaultGen{OptionalName: "doc"}, + &genClientset{ DefaultGen: generator.DefaultGen{ OptionalName: "clientset", @@ -154,11 +166,8 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat glog.Fatalf("cannot convert arguments.CustomArgs to clientgenargs.Args") } - if len(customArgs.CmdArgs) != 0 { - boilerplate = append(boilerplate, []byte(fmt.Sprintf("\n// This file is generated by client-gen with arguments: %s\n\n", customArgs.CmdArgs))...) - } else { - boilerplate = append(boilerplate, []byte(fmt.Sprintf("\n// This file is generated by client-gen with the default arguments.\n\n"))...) - } + generatedBy := generatedBy(customArgs) + gvToTypes := map[unversioned.GroupVersion][]*types.Type{} for gv, inputDir := range customArgs.GroupVersionToInputPath { p := context.Universe.Package(inputDir) @@ -176,9 +185,9 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat var packageList []generator.Package typedClientBasePath := filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName, "typed") - packageList = append(packageList, packageForClientset(customArgs, typedClientBasePath, boilerplate)) + packageList = append(packageList, packageForClientset(customArgs, typedClientBasePath, boilerplate, generatedBy)) if customArgs.FakeClient { - packageList = append(packageList, fake.PackageForClientset(customArgs, typedClientBasePath, boilerplate)) + packageList = append(packageList, fake.PackageForClientset(customArgs, typedClientBasePath, boilerplate, generatedBy)) } // If --clientset-only=true, we don't regenerate the individual typed clients. @@ -189,9 +198,9 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat orderer := namer.Orderer{namer.NewPrivateNamer(0)} for _, gv := range customArgs.GroupVersions { types := gvToTypes[gv] - packageList = append(packageList, packageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, boilerplate)) + packageList = append(packageList, packageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, boilerplate, generatedBy)) if customArgs.FakeClient { - packageList = append(packageList, fake.PackageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, boilerplate)) + packageList = append(packageList, fake.PackageForGroup(normalization.GroupVersion(gv), orderer.OrderTypes(types), typedClientBasePath, arguments.OutputBase, boilerplate, generatedBy)) } } diff --git a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go index debaccc62f3..54bcac045cb 100644 --- a/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go +++ b/cmd/libs/go2idl/client-gen/generators/fake/fake_client_generator.go @@ -26,7 +26,7 @@ import ( "k8s.io/kubernetes/pkg/api/unversioned" ) -func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, boilerplate []byte) generator.Package { +func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packageBasePath string, srcTreePath string, boilerplate []byte, generatedBy string) generator.Package { outputPackagePath := filepath.Join(packageBasePath, gv.Group, gv.Version, "fake") // TODO: should make this a function, called by here and in client-generator.go realClientPath := filepath.Join(packageBasePath, gv.Group, gv.Version) @@ -35,7 +35,8 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag PackagePath: outputPackagePath, HeaderText: boilerplate, PackageDocumentation: []byte( - `// Package fake has the automatically generated clients. + generatedBy + + `// Package fake has the automatically generated clients. `), // GeneratorFunc returns a list of generators. Each generator makes a // single file. @@ -76,7 +77,7 @@ func PackageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag } } -func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath string, boilerplate []byte) generator.Package { +func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath 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. @@ -84,12 +85,16 @@ func PackageForClientset(customArgs clientgenargs.Args, typedClientBasePath stri PackagePath: filepath.Join(customArgs.ClientsetOutputPath, customArgs.ClientsetName, "fake"), HeaderText: boilerplate, PackageDocumentation: []byte( - `// This package has the automatically generated fake clientset. + generatedBy + + `// This package has the automatically generated fake clientset. `), // GeneratorFunc returns a list of generators. Each generator generates a // single file. GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { generators = []generator.Generator{ + // Always generate a "doc.go" file. + generator.DefaultGen{OptionalName: "doc"}, + &genClientset{ DefaultGen: generator.DefaultGen{ OptionalName: "clientset_generated",