mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-16 00:41:24 +01:00
75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
// Copyright 2010 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate
|
|
// Go code. Install it by building this program and making it accessible within
|
|
// your PATH with the name:
|
|
// protoc-gen-go
|
|
//
|
|
// The 'go' suffix becomes part of the argument for the protocol compiler,
|
|
// such that it can be invoked as:
|
|
// protoc --go_out=paths=source_relative:. path/to/file.proto
|
|
//
|
|
// This generates Go bindings for the protocol buffer defined by file.proto.
|
|
// With that input, the output will be written to:
|
|
// path/to/file.pb.go
|
|
//
|
|
// See the README and documentation for protocol buffers to learn more:
|
|
// https://developers.google.com/protocol-buffers/
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/golang/protobuf/internal/gengogrpc"
|
|
gengo "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo"
|
|
"google.golang.org/protobuf/compiler/protogen"
|
|
)
|
|
|
|
func main() {
|
|
var (
|
|
flags flag.FlagSet
|
|
plugins = flags.String("plugins", "", "list of plugins to enable (supported values: grpc)")
|
|
importPrefix = flags.String("import_prefix", "", "prefix to prepend to import paths")
|
|
)
|
|
importRewriteFunc := func(importPath protogen.GoImportPath) protogen.GoImportPath {
|
|
switch importPath {
|
|
case "context", "fmt", "math":
|
|
return importPath
|
|
}
|
|
if *importPrefix != "" {
|
|
return protogen.GoImportPath(*importPrefix) + importPath
|
|
}
|
|
return importPath
|
|
}
|
|
protogen.Options{
|
|
ParamFunc: flags.Set,
|
|
ImportRewriteFunc: importRewriteFunc,
|
|
}.Run(func(gen *protogen.Plugin) error {
|
|
grpc := false
|
|
for _, plugin := range strings.Split(*plugins, ",") {
|
|
switch plugin {
|
|
case "grpc":
|
|
grpc = true
|
|
case "":
|
|
default:
|
|
return fmt.Errorf("protoc-gen-go: unknown plugin %q", plugin)
|
|
}
|
|
}
|
|
for _, f := range gen.Files {
|
|
if !f.Generate {
|
|
continue
|
|
}
|
|
g := gengo.GenerateFile(gen, f)
|
|
if grpc {
|
|
gengogrpc.GenerateFileContent(gen, f, g)
|
|
}
|
|
}
|
|
gen.SupportedFeatures = gengo.SupportedFeatures
|
|
return nil
|
|
})
|
|
}
|