1*1c12ee1eSDan Willemsen// Copyright 2018 The Go Authors. All rights reserved. 2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style 3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file. 4*1c12ee1eSDan Willemsen 5*1c12ee1eSDan Willemsen// The protoc-gen-go binary is a protoc plugin to generate Go code for 6*1c12ee1eSDan Willemsen// both proto2 and proto3 versions of the protocol buffer language. 7*1c12ee1eSDan Willemsen// 8*1c12ee1eSDan Willemsen// For more information about the usage of this plugin, see: 9*1c12ee1eSDan Willemsen// https://protobuf.dev/reference/go/go-generated. 10*1c12ee1eSDan Willemsenpackage main 11*1c12ee1eSDan Willemsen 12*1c12ee1eSDan Willemsenimport ( 13*1c12ee1eSDan Willemsen "errors" 14*1c12ee1eSDan Willemsen "flag" 15*1c12ee1eSDan Willemsen "fmt" 16*1c12ee1eSDan Willemsen "os" 17*1c12ee1eSDan Willemsen "path/filepath" 18*1c12ee1eSDan Willemsen 19*1c12ee1eSDan Willemsen gengo "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo" 20*1c12ee1eSDan Willemsen "google.golang.org/protobuf/compiler/protogen" 21*1c12ee1eSDan Willemsen "google.golang.org/protobuf/internal/version" 22*1c12ee1eSDan Willemsen) 23*1c12ee1eSDan Willemsen 24*1c12ee1eSDan Willemsenconst genGoDocURL = "https://protobuf.dev/reference/go/go-generated" 25*1c12ee1eSDan Willemsenconst grpcDocURL = "https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code" 26*1c12ee1eSDan Willemsen 27*1c12ee1eSDan Willemsenfunc main() { 28*1c12ee1eSDan Willemsen if len(os.Args) == 2 && os.Args[1] == "--version" { 29*1c12ee1eSDan Willemsen fmt.Fprintf(os.Stdout, "%v %v\n", filepath.Base(os.Args[0]), version.String()) 30*1c12ee1eSDan Willemsen os.Exit(0) 31*1c12ee1eSDan Willemsen } 32*1c12ee1eSDan Willemsen if len(os.Args) == 2 && os.Args[1] == "--help" { 33*1c12ee1eSDan Willemsen fmt.Fprintf(os.Stdout, "See "+genGoDocURL+" for usage information.\n") 34*1c12ee1eSDan Willemsen os.Exit(0) 35*1c12ee1eSDan Willemsen } 36*1c12ee1eSDan Willemsen 37*1c12ee1eSDan Willemsen var ( 38*1c12ee1eSDan Willemsen flags flag.FlagSet 39*1c12ee1eSDan Willemsen plugins = flags.String("plugins", "", "deprecated option") 40*1c12ee1eSDan Willemsen ) 41*1c12ee1eSDan Willemsen protogen.Options{ 42*1c12ee1eSDan Willemsen ParamFunc: flags.Set, 43*1c12ee1eSDan Willemsen }.Run(func(gen *protogen.Plugin) error { 44*1c12ee1eSDan Willemsen if *plugins != "" { 45*1c12ee1eSDan Willemsen return errors.New("protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC\n\n" + 46*1c12ee1eSDan Willemsen "See " + grpcDocURL + " for more information.") 47*1c12ee1eSDan Willemsen } 48*1c12ee1eSDan Willemsen for _, f := range gen.Files { 49*1c12ee1eSDan Willemsen if f.Generate { 50*1c12ee1eSDan Willemsen gengo.GenerateFile(gen, f) 51*1c12ee1eSDan Willemsen } 52*1c12ee1eSDan Willemsen } 53*1c12ee1eSDan Willemsen gen.SupportedFeatures = gengo.SupportedFeatures 54*1c12ee1eSDan Willemsen return nil 55*1c12ee1eSDan Willemsen }) 56*1c12ee1eSDan Willemsen} 57