mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Ensure go-to-protobuf gen can run when not in GOPATH
This commit is contained in:
parent
b6020d263c
commit
b9e11207b1
@ -51,6 +51,7 @@ type Generator struct {
|
|||||||
KeepGogoproto bool
|
KeepGogoproto bool
|
||||||
SkipGeneratedRewrite bool
|
SkipGeneratedRewrite bool
|
||||||
DropEmbeddedFields string
|
DropEmbeddedFields string
|
||||||
|
TrimPathPrefix string
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() *Generator {
|
func New() *Generator {
|
||||||
@ -97,6 +98,7 @@ func (g *Generator) BindFlags(flag *flag.FlagSet) {
|
|||||||
flag.BoolVar(&g.KeepGogoproto, "keep-gogoproto", g.KeepGogoproto, "If true, the generated IDL will contain gogoprotobuf extensions which are normally removed")
|
flag.BoolVar(&g.KeepGogoproto, "keep-gogoproto", g.KeepGogoproto, "If true, the generated IDL will contain gogoprotobuf extensions which are normally removed")
|
||||||
flag.BoolVar(&g.SkipGeneratedRewrite, "skip-generated-rewrite", g.SkipGeneratedRewrite, "If true, skip fixing up the generated.pb.go file (debugging only).")
|
flag.BoolVar(&g.SkipGeneratedRewrite, "skip-generated-rewrite", g.SkipGeneratedRewrite, "If true, skip fixing up the generated.pb.go file (debugging only).")
|
||||||
flag.StringVar(&g.DropEmbeddedFields, "drop-embedded-fields", g.DropEmbeddedFields, "Comma-delimited list of embedded Go types to omit from generated protobufs")
|
flag.StringVar(&g.DropEmbeddedFields, "drop-embedded-fields", g.DropEmbeddedFields, "Comma-delimited list of embedded Go types to omit from generated protobufs")
|
||||||
|
flag.StringVar(&g.TrimPathPrefix, "trim-path-prefix", g.TrimPathPrefix, "If set, trim the specified prefix from --output-package when generating files.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(g *Generator) {
|
func Run(g *Generator) {
|
||||||
@ -202,6 +204,7 @@ func Run(g *Generator) {
|
|||||||
|
|
||||||
c.Verify = g.Common.VerifyOnly
|
c.Verify = g.Common.VerifyOnly
|
||||||
c.FileTypes["protoidl"] = NewProtoFile()
|
c.FileTypes["protoidl"] = NewProtoFile()
|
||||||
|
c.TrimPathPrefix = g.TrimPathPrefix
|
||||||
|
|
||||||
// order package by imports, importees first
|
// order package by imports, importees first
|
||||||
deps := deps(c, protobufNames.packages)
|
deps := deps(c, protobufNames.packages)
|
||||||
@ -272,6 +275,22 @@ func Run(g *Generator) {
|
|||||||
outputPath = filepath.Join(g.VendorOutputBase, p.OutputPath())
|
outputPath = filepath.Join(g.VendorOutputBase, p.OutputPath())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When working outside of GOPATH, we typically won't want to generate the
|
||||||
|
// full path for a package. For example, if our current project's root/base
|
||||||
|
// package is github.com/foo/bar, outDir=., p.Path()=github.com/foo/bar/generated,
|
||||||
|
// then we really want to be writing files to ./generated, not ./github.com/foo/bar/generated.
|
||||||
|
// The following will trim a path prefix (github.com/foo/bar) from p.Path() to arrive at
|
||||||
|
// a relative path that works with projects not in GOPATH.
|
||||||
|
if g.TrimPathPrefix != "" {
|
||||||
|
separator := string(filepath.Separator)
|
||||||
|
if !strings.HasSuffix(g.TrimPathPrefix, separator) {
|
||||||
|
g.TrimPathPrefix += separator
|
||||||
|
}
|
||||||
|
|
||||||
|
path = strings.TrimPrefix(path, g.TrimPathPrefix)
|
||||||
|
outputPath = strings.TrimPrefix(outputPath, g.TrimPathPrefix)
|
||||||
|
}
|
||||||
|
|
||||||
// generate the gogoprotobuf protoc
|
// generate the gogoprotobuf protoc
|
||||||
cmd := exec.Command("protoc", append(args, path)...)
|
cmd := exec.Command("protoc", append(args, path)...)
|
||||||
out, err := cmd.CombinedOutput()
|
out, err := cmd.CombinedOutput()
|
||||||
|
Loading…
Reference in New Issue
Block a user