github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/cmd/protoc-gen-openapi/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/golang/protobuf/proto" 8 plugin "github.com/golang/protobuf/protoc-gen-go/plugin" 9 "github.com/tickoalcantara12/micro/v3/cmd/protoc-gen-openapi/converter" 10 "github.com/tickoalcantara12/micro/v3/service/logger" 11 ) 12 13 func main() { 14 15 // Get a converter: 16 protoConverter := converter.New() 17 18 // Convert the generator request: 19 var ok = true 20 logger.Debugf("Processing code generator request") 21 res, err := protoConverter.ConvertFrom(os.Stdin) 22 if err != nil { 23 ok = false 24 if res == nil { 25 message := fmt.Sprintf("Failed to read input: %v", err) 26 res = &plugin.CodeGeneratorResponse{ 27 Error: &message, 28 } 29 } 30 } 31 32 logger.Debug("Serializing code generator response") 33 data, err := proto.Marshal(res) 34 if err != nil { 35 logger.Fatalf("Cannot marshal response: %v", err) 36 } 37 _, err = os.Stdout.Write(data) 38 if err != nil { 39 logger.Fatalf("Failed to write response: %v", err) 40 } 41 42 if ok { 43 logger.Debug("Succeeded to process code generator request") 44 } else { 45 logger.Warn("Failed to process code generator but successfully sent the error to protoc") 46 os.Exit(1) 47 } 48 }