aboutsummaryrefslogtreecommitdiff
path: root/cmd/protoc-gen-go/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/protoc-gen-go/main.go')
-rw-r--r--cmd/protoc-gen-go/main.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/cmd/protoc-gen-go/main.go b/cmd/protoc-gen-go/main.go
new file mode 100644
index 00000000..0559ee33
--- /dev/null
+++ b/cmd/protoc-gen-go/main.go
@@ -0,0 +1,56 @@
+// Copyright 2018 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.
+
+// The protoc-gen-go binary is a protoc plugin to generate Go code for
+// both proto2 and proto3 versions of the protocol buffer language.
+//
+// For more information about the usage of this plugin, see:
+// https://developers.google.com/protocol-buffers/docs/reference/go-generated
+package main
+
+import (
+ "errors"
+ "flag"
+ "fmt"
+ "os"
+ "path/filepath"
+
+ gengo "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo"
+ "google.golang.org/protobuf/compiler/protogen"
+ "google.golang.org/protobuf/internal/version"
+)
+
+const genGoDocURL = "https://developers.google.com/protocol-buffers/docs/reference/go-generated"
+const grpcDocURL = "https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code"
+
+func main() {
+ if len(os.Args) == 2 && os.Args[1] == "--version" {
+ fmt.Fprintf(os.Stdout, "%v %v\n", filepath.Base(os.Args[0]), version.String())
+ os.Exit(0)
+ }
+ if len(os.Args) == 2 && os.Args[1] == "--help" {
+ fmt.Fprintf(os.Stdout, "See "+genGoDocURL+" for usage information.\n")
+ os.Exit(0)
+ }
+
+ var (
+ flags flag.FlagSet
+ plugins = flags.String("plugins", "", "deprecated option")
+ )
+ protogen.Options{
+ ParamFunc: flags.Set,
+ }.Run(func(gen *protogen.Plugin) error {
+ if *plugins != "" {
+ return errors.New("protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC\n\n" +
+ "See " + grpcDocURL + " for more information.")
+ }
+ for _, f := range gen.Files {
+ if f.Generate {
+ gengo.GenerateFile(gen, f)
+ }
+ }
+ gen.SupportedFeatures = gengo.SupportedFeatures
+ return nil
+ })
+}