@@ -6,24 +6,24 @@ import (
66 "strings"
77
88 "github.com/getkin/kin-openapi/openapi3"
9- "github.com/grpc-ecosystem/grpc-gateway/v2/internal/descriptor"
10- gen "github.com/grpc-ecosystem/grpc-gateway/v2/internal/generator"
11- "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv3/options"
129 "google.golang.org/genproto/googleapis/api/visibility"
1310 statuspb "google.golang.org/genproto/googleapis/rpc/status"
1411 "google.golang.org/protobuf/proto"
1512 "google.golang.org/protobuf/reflect/protodesc"
1613 "google.golang.org/protobuf/types/descriptorpb"
1714 "google.golang.org/protobuf/types/known/anypb"
1815 "google.golang.org/protobuf/types/pluginpb"
16+
17+ "github.com/grpc-ecosystem/grpc-gateway/v2/internal/descriptor"
18+ gen "github.com/grpc-ecosystem/grpc-gateway/v2/internal/generator"
19+ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv3/options"
1920)
2021
2122type generator struct {
2223 reg * descriptor.Registry
2324 format Format
2425}
2526
26-
2727func NewGenerator (reg * descriptor.Registry , format Format ) gen.Generator {
2828 return & generator {
2929 reg : reg ,
@@ -37,6 +37,10 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
3737 return nil , fmt .Errorf ("could not load prequisite proto files in registry: %w" , err )
3838 }
3939
40+ if len (targets ) == 0 {
41+ return nil , nil
42+ }
43+
4044 respFiles := make ([]* descriptor.ResponseFile , 0 , len (targets ))
4145 docs := make ([]* openapi3.T , 0 , len (targets ))
4246 for _ , t := range targets {
@@ -50,12 +54,14 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
5054 }
5155
5256 base := filepath .Base (t .GetName ())
57+ fileDir := filepath .Dir (t .GetName ())
5358 ext := filepath .Ext (base )
5459 fileName := fmt .Sprintf ("%s.openapiv3.%s" , base [:len (base )- len (ext )], g .format )
60+ docPath := filepath .Join (fileDir , fileName )
5561
5662 respFiles = append (respFiles , & descriptor.ResponseFile {
5763 CodeGeneratorResponse_File : & pluginpb.CodeGeneratorResponse_File {
58- Name : proto .String (fileName ),
64+ Name : proto .String (docPath ),
5965 Content : proto .String (string (contentBytes )),
6066 },
6167 })
@@ -72,9 +78,12 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
7278 return nil , err
7379 }
7480
81+ mergedDir := filepath .Dir (targets [0 ].GetName ())
82+ mergedPath := filepath .Join (mergedDir , fmt .Sprintf ("merged.openapiv3.%s" , g .format ))
83+
7584 respFiles = append (respFiles , & descriptor.ResponseFile {
7685 CodeGeneratorResponse_File : & pluginpb.CodeGeneratorResponse_File {
77- Name : proto .String (fmt . Sprintf ( "merged.openapiv3.%s" , g . format ) ),
86+ Name : proto .String (mergedPath ),
7887 Content : proto .String (string (contentBytes )),
7988 },
8089 })
0 commit comments