mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
code-generator/protobuf: cut-off kubernetes specifics
This commit is contained in:
parent
ea017719e5
commit
0fdcd993bf
@ -41,6 +41,43 @@ fi
|
|||||||
|
|
||||||
gotoprotobuf=$(kube::util::find-binary "go-to-protobuf")
|
gotoprotobuf=$(kube::util::find-binary "go-to-protobuf")
|
||||||
|
|
||||||
|
PACKAGES=(
|
||||||
|
k8s.io/apiserver/pkg/apis/example/v1
|
||||||
|
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1
|
||||||
|
k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1
|
||||||
|
k8s.io/api/core/v1
|
||||||
|
k8s.io/api/policy/v1beta1
|
||||||
|
k8s.io/api/extensions/v1beta1
|
||||||
|
k8s.io/api/autoscaling/v1
|
||||||
|
k8s.io/api/authorization/v1
|
||||||
|
k8s.io/api/autoscaling/v2beta1
|
||||||
|
k8s.io/api/authorization/v1beta1
|
||||||
|
k8s.io/api/batch/v1
|
||||||
|
k8s.io/api/batch/v1beta1
|
||||||
|
k8s.io/api/batch/v2alpha1
|
||||||
|
k8s.io/api/apps/v1beta1
|
||||||
|
k8s.io/api/apps/v1beta2
|
||||||
|
k8s.io/api/authentication/v1
|
||||||
|
k8s.io/api/authentication/v1beta1
|
||||||
|
k8s.io/api/rbac/v1alpha1
|
||||||
|
k8s.io/api/rbac/v1beta1
|
||||||
|
k8s.io/api/certificates/v1beta1
|
||||||
|
k8s.io/api/imagepolicy/v1alpha1
|
||||||
|
k8s.io/api/scheduling/v1alpha1
|
||||||
|
k8s.io/api/settings/v1alpha1
|
||||||
|
k8s.io/api/storage/v1beta1
|
||||||
|
k8s.io/api/storage/v1
|
||||||
|
k8s.io/api/admissionregistration/v1alpha1
|
||||||
|
k8s.io/api/admission/v1alpha1
|
||||||
|
k8s.io/api/networking/v1
|
||||||
|
k8s.io/kubernetes/federation/apis/federation/v1beta1
|
||||||
|
k8s.io/metrics/pkg/apis/metrics/v1alpha1
|
||||||
|
k8s.io/metrics/pkg/apis/metrics/v1beta1
|
||||||
|
k8s.io/metrics/pkg/apis/custom_metrics/v1beta1
|
||||||
|
k8s.io/apiserver/pkg/apis/audit/v1alpha1
|
||||||
|
k8s.io/apiserver/pkg/apis/audit/v1beta1
|
||||||
|
)
|
||||||
|
|
||||||
# requires the 'proto' tag to build (will remove when ready)
|
# requires the 'proto' tag to build (will remove when ready)
|
||||||
# searches for the protoc-gen-gogo extension in the output directory
|
# searches for the protoc-gen-gogo extension in the output directory
|
||||||
# satisfies import of github.com/gogo/protobuf/gogoproto/gogo.proto and the
|
# satisfies import of github.com/gogo/protobuf/gogoproto/gogo.proto and the
|
||||||
@ -49,4 +86,5 @@ PATH="${KUBE_ROOT}/_output/bin:${PATH}" \
|
|||||||
"${gotoprotobuf}" \
|
"${gotoprotobuf}" \
|
||||||
--proto-import="${KUBE_ROOT}/vendor" \
|
--proto-import="${KUBE_ROOT}/vendor" \
|
||||||
--proto-import="${KUBE_ROOT}/third_party/protobuf" \
|
--proto-import="${KUBE_ROOT}/third_party/protobuf" \
|
||||||
|
--packages=$(IFS=, ; echo "${PACKAGES[*]}")
|
||||||
"$@"
|
"$@"
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
@ -37,6 +38,7 @@ import (
|
|||||||
|
|
||||||
type Generator struct {
|
type Generator struct {
|
||||||
Common args.GeneratorArgs
|
Common args.GeneratorArgs
|
||||||
|
APIMachineryPackages string
|
||||||
Packages string
|
Packages string
|
||||||
OutputBase string
|
OutputBase string
|
||||||
VendorOutputBase string
|
VendorOutputBase string
|
||||||
@ -56,53 +58,24 @@ func New() *Generator {
|
|||||||
GoHeaderFilePath: filepath.Join(sourceTree, "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"),
|
GoHeaderFilePath: filepath.Join(sourceTree, "k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt"),
|
||||||
}
|
}
|
||||||
defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf")
|
defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf")
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Cannot get current directory.")
|
||||||
|
}
|
||||||
return &Generator{
|
return &Generator{
|
||||||
Common: common,
|
Common: common,
|
||||||
OutputBase: sourceTree,
|
OutputBase: sourceTree,
|
||||||
VendorOutputBase: filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor"),
|
VendorOutputBase: filepath.Join(cwd, "vendor"),
|
||||||
ProtoImport: []string{defaultProtoImport},
|
ProtoImport: []string{defaultProtoImport},
|
||||||
Packages: strings.Join([]string{
|
APIMachineryPackages: strings.Join([]string{
|
||||||
`+k8s.io/apimachinery/pkg/util/intstr`,
|
`+k8s.io/apimachinery/pkg/util/intstr`,
|
||||||
`+k8s.io/apimachinery/pkg/api/resource`,
|
`+k8s.io/apimachinery/pkg/api/resource`,
|
||||||
`+k8s.io/apimachinery/pkg/runtime/schema`,
|
`+k8s.io/apimachinery/pkg/runtime/schema`,
|
||||||
`+k8s.io/apimachinery/pkg/runtime`,
|
`+k8s.io/apimachinery/pkg/runtime`,
|
||||||
`k8s.io/apimachinery/pkg/apis/meta/v1`,
|
`k8s.io/apimachinery/pkg/apis/meta/v1`,
|
||||||
`k8s.io/apimachinery/pkg/apis/meta/v1alpha1`,
|
`k8s.io/apimachinery/pkg/apis/meta/v1alpha1`,
|
||||||
`k8s.io/apiserver/pkg/apis/example/v1`,
|
|
||||||
`k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1`,
|
|
||||||
`k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1`,
|
|
||||||
`k8s.io/api/core/v1`,
|
|
||||||
`k8s.io/api/policy/v1beta1`,
|
|
||||||
`k8s.io/api/extensions/v1beta1`,
|
|
||||||
`k8s.io/api/autoscaling/v1`,
|
|
||||||
`k8s.io/api/authorization/v1`,
|
|
||||||
`k8s.io/api/autoscaling/v2beta1`,
|
|
||||||
`k8s.io/api/authorization/v1beta1`,
|
|
||||||
`k8s.io/api/batch/v1`,
|
|
||||||
`k8s.io/api/batch/v1beta1`,
|
|
||||||
`k8s.io/api/batch/v2alpha1`,
|
|
||||||
`k8s.io/api/apps/v1beta1`,
|
|
||||||
`k8s.io/api/apps/v1beta2`,
|
|
||||||
`k8s.io/api/authentication/v1`,
|
|
||||||
`k8s.io/api/authentication/v1beta1`,
|
|
||||||
`k8s.io/api/rbac/v1alpha1`,
|
|
||||||
`k8s.io/api/rbac/v1beta1`,
|
|
||||||
`k8s.io/api/certificates/v1beta1`,
|
|
||||||
`k8s.io/api/imagepolicy/v1alpha1`,
|
|
||||||
`k8s.io/api/scheduling/v1alpha1`,
|
|
||||||
`k8s.io/api/settings/v1alpha1`,
|
|
||||||
`k8s.io/api/storage/v1beta1`,
|
|
||||||
`k8s.io/api/storage/v1`,
|
|
||||||
`k8s.io/api/admissionregistration/v1alpha1`,
|
|
||||||
`k8s.io/api/admission/v1alpha1`,
|
|
||||||
`k8s.io/api/networking/v1`,
|
|
||||||
`k8s.io/kubernetes/federation/apis/federation/v1beta1`,
|
|
||||||
`k8s.io/metrics/pkg/apis/metrics/v1alpha1`,
|
|
||||||
`k8s.io/metrics/pkg/apis/metrics/v1beta1`,
|
|
||||||
`k8s.io/metrics/pkg/apis/custom_metrics/v1beta1`,
|
|
||||||
`k8s.io/apiserver/pkg/apis/audit/v1alpha1`,
|
|
||||||
`k8s.io/apiserver/pkg/apis/audit/v1beta1`,
|
|
||||||
}, ","),
|
}, ","),
|
||||||
|
Packages: "",
|
||||||
DropEmbeddedFields: "k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta",
|
DropEmbeddedFields: "k8s.io/apimachinery/pkg/apis/meta/v1.TypeMeta",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,8 +84,10 @@ func (g *Generator) BindFlags(flag *flag.FlagSet) {
|
|||||||
flag.StringVarP(&g.Common.GoHeaderFilePath, "go-header-file", "h", g.Common.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.")
|
flag.StringVarP(&g.Common.GoHeaderFilePath, "go-header-file", "h", g.Common.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.")
|
||||||
flag.BoolVar(&g.Common.VerifyOnly, "verify-only", g.Common.VerifyOnly, "If true, only verify existing output, do not write anything.")
|
flag.BoolVar(&g.Common.VerifyOnly, "verify-only", g.Common.VerifyOnly, "If true, only verify existing output, do not write anything.")
|
||||||
flag.StringVarP(&g.Packages, "packages", "p", g.Packages, "comma-separated list of directories to get input types from. Directories prefixed with '-' are not generated, directories prefixed with '+' only create types with explicit IDL instructions.")
|
flag.StringVarP(&g.Packages, "packages", "p", g.Packages, "comma-separated list of directories to get input types from. Directories prefixed with '-' are not generated, directories prefixed with '+' only create types with explicit IDL instructions.")
|
||||||
|
flag.StringVar(&g.APIMachineryPackages, "apimachinery-packages", g.APIMachineryPackages, "comma-separated list of directories to get apimachinery input types from which are needed by any API. Directories prefixed with '-' are not generated, directories prefixed with '+' only create types with explicit IDL instructions.")
|
||||||
flag.StringVarP(&g.OutputBase, "output-base", "o", g.OutputBase, "Output base; defaults to $GOPATH/src/")
|
flag.StringVarP(&g.OutputBase, "output-base", "o", g.OutputBase, "Output base; defaults to $GOPATH/src/")
|
||||||
flag.StringSliceVar(&g.ProtoImport, "proto-import", g.ProtoImport, "The search path for the core protobuf .protos, required, defaults to GODEPS on path.")
|
flag.StringVar(&g.VendorOutputBase, "vendor-output-base", g.VendorOutputBase, "The vendor/ directory to look for packages in; defaults to $PWD/vendor/.")
|
||||||
|
flag.StringSliceVar(&g.ProtoImport, "proto-import", g.ProtoImport, "The search path for the core protobuf .protos, required; defaults $GOPATH/src/k8s.io/kubernetes/vendor/github.com/gogo/protobuf/protobuf.")
|
||||||
flag.StringVar(&g.Conditional, "conditional", g.Conditional, "An optional Golang build tag condition to add to the generated Go code")
|
flag.StringVar(&g.Conditional, "conditional", g.Conditional, "An optional Golang build tag condition to add to the generated Go code")
|
||||||
flag.BoolVar(&g.Clean, "clean", g.Clean, "If true, remove all generated files for the specified Packages.")
|
flag.BoolVar(&g.Clean, "clean", g.Clean, "If true, remove all generated files for the specified Packages.")
|
||||||
flag.BoolVar(&g.OnlyIDL, "only-idl", g.OnlyIDL, "If true, only generate the IDL for each package.")
|
flag.BoolVar(&g.OnlyIDL, "only-idl", g.OnlyIDL, "If true, only generate the IDL for each package.")
|
||||||
@ -146,13 +121,25 @@ func Run(g *Generator) {
|
|||||||
|
|
||||||
boilerplate, err := g.Common.LoadGoBoilerplate()
|
boilerplate, err := g.Common.LoadGoBoilerplate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed loading boilerplate: %v", err)
|
log.Fatalf("Failed loading boilerplate (consider using the go-header-file flag): %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
protobufNames := NewProtobufNamer()
|
protobufNames := NewProtobufNamer()
|
||||||
outputPackages := generator.Packages{}
|
outputPackages := generator.Packages{}
|
||||||
nonOutputPackages := map[string]struct{}{}
|
nonOutputPackages := map[string]struct{}{}
|
||||||
for _, d := range strings.Split(g.Packages, ",") {
|
|
||||||
|
var packages []string
|
||||||
|
if len(g.APIMachineryPackages) != 0 {
|
||||||
|
packages = append(packages, strings.Split(g.APIMachineryPackages, ",")...)
|
||||||
|
}
|
||||||
|
if len(g.Packages) != 0 {
|
||||||
|
packages = append(packages, strings.Split(g.Packages, ",")...)
|
||||||
|
}
|
||||||
|
if len(packages) == 0 {
|
||||||
|
log.Fatalf("Both apimachinery-packages and packages are empty. At least one package must be specified.")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, d := range packages {
|
||||||
generateAllTypes, outputPackage := true, true
|
generateAllTypes, outputPackage := true, true
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(d, "+"):
|
case strings.HasPrefix(d, "+"):
|
||||||
|
Loading…
Reference in New Issue
Block a user