Skip to content

Commit

Permalink
code-generator: add boilerplate header
Browse files Browse the repository at this point in the history
Currently, the boilerplate header from k8s.io/kubernetes
is used. If k8s.io/kubernetes is not in the GOPATH, a
panic will occur.

To fix this, we first calculate the relative path to
k8s.io/code-generator and then use the boilerplate from
code-generator. This avoids hard coding the path and
works well for all repos.
  • Loading branch information
nikhita committed Feb 13, 2018
1 parent ae0f45e commit 8f898a3
Show file tree
Hide file tree
Showing 24 changed files with 74 additions and 10 deletions.
1 change: 1 addition & 0 deletions staging/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ filegroup(
"//staging/src/k8s.io/code-generator/cmd/lister-gen:all-srcs",
"//staging/src/k8s.io/code-generator/cmd/openapi-gen:all-srcs",
"//staging/src/k8s.io/code-generator/cmd/set-gen:all-srcs",
"//staging/src/k8s.io/code-generator/hack:all-srcs",
"//staging/src/k8s.io/code-generator/pkg/util:all-srcs",
"//staging/src/k8s.io/code-generator/third_party/forked/golang/reflect:all-srcs",
"//staging/src/k8s.io/kube-aggregator:all-srcs",
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/client-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/client-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/cmd/client-gen/generators:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
],
)
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/client-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ import (

generatorargs "k8s.io/code-generator/cmd/client-gen/args"
"k8s.io/code-generator/cmd/client-gen/generators"
"k8s.io/code-generator/pkg/util"
)

func main() {
genericArgs, customArgs := generatorargs.NewDefaults()

// Override defaults.
// TODO: move this out of client-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/clientset_generated/"

genericArgs.AddFlags(pflag.CommandLine)
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/conversion-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/conversion-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/cmd/conversion-gen/generators:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
],
)
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,15 @@ import (

generatorargs "k8s.io/code-generator/cmd/conversion-gen/args"
"k8s.io/code-generator/cmd/conversion-gen/generators"
"k8s.io/code-generator/pkg/util"
)

func main() {
genericArgs, customArgs := generatorargs.NewDefaults()

// Override defaults.
// TODO: move this out of conversion-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())

genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine)
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/deepcopy-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/deepcopy-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/gengo/examples/deepcopy-gen/generators:go_default_library",
],
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,15 @@ import (
"k8s.io/gengo/examples/deepcopy-gen/generators"

generatorargs "k8s.io/code-generator/cmd/deepcopy-gen/args"
"k8s.io/code-generator/pkg/util"
)

func main() {
genericArgs, customArgs := generatorargs.NewDefaults()

// Override defaults.
// TODO: move this out of deepcopy-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())

genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine)
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/defaulter-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/defaulter-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/gengo/examples/defaulter-gen/generators:go_default_library",
],
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,15 @@ import (
"k8s.io/gengo/examples/defaulter-gen/generators"

generatorargs "k8s.io/code-generator/cmd/defaulter-gen/args"
"k8s.io/code-generator/pkg/util"
)

func main() {
genericArgs, customArgs := generatorargs.NewDefaults()

// Override defaults.
// TODO: move this out of defaulter-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())

genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/code-generator/third_party/forked/golang/reflect:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/gengo/generator:go_default_library",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"path/filepath"
"strings"

"k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/gengo/generator"
"k8s.io/gengo/namer"
Expand Down Expand Up @@ -55,7 +56,7 @@ func New() *Generator {
sourceTree := args.DefaultSourceTree()
common := args.GeneratorArgs{
OutputBase: sourceTree,
GoHeaderFilePath: filepath.Join(sourceTree, "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"),
GoHeaderFilePath: filepath.Join(sourceTree, util.BoilerplatePath()),
}
defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf")
cwd, err := os.Getwd()
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/import-boss/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ go_library(
importpath = "k8s.io/code-generator/cmd/import-boss",
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/gengo/examples/import-boss/generators:go_default_library",
],
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/import-boss/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ import (
"os"
"path/filepath"

"k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/gengo/examples/import-boss/generators"

Expand All @@ -69,7 +70,7 @@ func main() {
arguments := args.Default()

// Override defaults.
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())
arguments.InputDirs = []string{
"k8s.io/kubernetes/pkg/...",
"k8s.io/kubernetes/cmd/...",
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/informer-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/informer-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/cmd/informer-gen/generators:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
],
)
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/informer-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/pflag"
"k8s.io/code-generator/cmd/informer-gen/generators"
"k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"

generatorargs "k8s.io/code-generator/cmd/informer-gen/args"
Expand All @@ -33,7 +34,7 @@ func main() {

// Override defaults.
// TODO: move out of informer-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated"
customArgs.VersionedClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
customArgs.InternalClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/lister-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/lister-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/cmd/lister-gen/generators:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
],
)
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/lister-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/pflag"
"k8s.io/code-generator/cmd/lister-gen/generators"
"k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"

generatorargs "k8s.io/code-generator/cmd/lister-gen/args"
Expand All @@ -33,7 +34,7 @@ func main() {

// Override defaults.
// TODO: move this out of lister-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())
genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers"

genericArgs.AddFlags(pflag.CommandLine)
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/openapi-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/code-generator/cmd/openapi-gen/args:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/generators:go_default_library",
],
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/openapi-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ import (
"k8s.io/kube-openapi/pkg/generators"

generatorargs "k8s.io/code-generator/cmd/openapi-gen/args"
"k8s.io/code-generator/pkg/util"
)

func main() {
genericArgs, customArgs := generatorargs.NewDefaults()

// Override defaults.
// TODO: move this out of openapi-gen
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())

genericArgs.AddFlags(pflag.CommandLine)
customArgs.AddFlags(pflag.CommandLine)
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/code-generator/cmd/set-gen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ go_library(
importpath = "k8s.io/code-generator/cmd/set-gen",
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/code-generator/pkg/util:go_default_library",
"//vendor/k8s.io/gengo/args:go_default_library",
"//vendor/k8s.io/gengo/examples/set-gen/generators:go_default_library",
],
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/code-generator/cmd/set-gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"os"
"path/filepath"

"k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
"k8s.io/gengo/examples/set-gen/generators"

Expand All @@ -38,7 +39,7 @@ func main() {
arguments := args.Default()

// Override defaults.
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt")
arguments.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), util.BoilerplatePath())
arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"}
arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets"

Expand Down
18 changes: 18 additions & 0 deletions staging/src/k8s.io/code-generator/hack/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
exports_files(
glob(["*.txt"]),
visibility = ["//visibility:public"],
)

filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
16 changes: 16 additions & 0 deletions staging/src/k8s.io/code-generator/hack/boilerplate.go.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
Copyright YEAR The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

9 changes: 9 additions & 0 deletions staging/src/k8s.io/code-generator/pkg/util/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,14 @@ package util

import (
gobuild "go/build"
"path"
"path/filepath"
"reflect"
"strings"
)

type empty struct{}

// CurrentPackage returns the go package of the current directory, or "" if it cannot
// be derived from the GOPATH.
func CurrentPackage() string {
Expand Down Expand Up @@ -50,3 +54,8 @@ func hasSubdir(root, dir string) (rel string, ok bool) {
// cut off root
return filepath.ToSlash(dir[len(root):]), true
}

// BoilerplatePath uses the boilerplate in code-generator by calculating the relative path to it.
func BoilerplatePath() string {
return path.Join(reflect.TypeOf(empty{}).PkgPath(), "/../../hack/boilerplate.go.txt")
}

0 comments on commit 8f898a3

Please sign in to comment.