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  }