@@ -6,24 +6,24 @@ import (
6
6
"strings"
7
7
8
8
"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"
12
9
"google.golang.org/genproto/googleapis/api/visibility"
13
10
statuspb "google.golang.org/genproto/googleapis/rpc/status"
14
11
"google.golang.org/protobuf/proto"
15
12
"google.golang.org/protobuf/reflect/protodesc"
16
13
"google.golang.org/protobuf/types/descriptorpb"
17
14
"google.golang.org/protobuf/types/known/anypb"
18
15
"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"
19
20
)
20
21
21
22
type generator struct {
22
23
reg * descriptor.Registry
23
24
format Format
24
25
}
25
26
26
-
27
27
func NewGenerator (reg * descriptor.Registry , format Format ) gen.Generator {
28
28
return & generator {
29
29
reg : reg ,
@@ -37,6 +37,10 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
37
37
return nil , fmt .Errorf ("could not load prequisite proto files in registry: %w" , err )
38
38
}
39
39
40
+ if len (targets ) == 0 {
41
+ return nil , nil
42
+ }
43
+
40
44
respFiles := make ([]* descriptor.ResponseFile , 0 , len (targets ))
41
45
docs := make ([]* openapi3.T , 0 , len (targets ))
42
46
for _ , t := range targets {
@@ -50,12 +54,14 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
50
54
}
51
55
52
56
base := filepath .Base (t .GetName ())
57
+ fileDir := filepath .Dir (t .GetName ())
53
58
ext := filepath .Ext (base )
54
59
fileName := fmt .Sprintf ("%s.openapiv3.%s" , base [:len (base )- len (ext )], g .format )
60
+ docPath := filepath .Join (fileDir , fileName )
55
61
56
62
respFiles = append (respFiles , & descriptor.ResponseFile {
57
63
CodeGeneratorResponse_File : & pluginpb.CodeGeneratorResponse_File {
58
- Name : proto .String (fileName ),
64
+ Name : proto .String (docPath ),
59
65
Content : proto .String (string (contentBytes )),
60
66
},
61
67
})
@@ -72,9 +78,12 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*descriptor.Response
72
78
return nil , err
73
79
}
74
80
81
+ mergedDir := filepath .Dir (targets [0 ].GetName ())
82
+ mergedPath := filepath .Join (mergedDir , fmt .Sprintf ("merged.openapiv3.%s" , g .format ))
83
+
75
84
respFiles = append (respFiles , & descriptor.ResponseFile {
76
85
CodeGeneratorResponse_File : & pluginpb.CodeGeneratorResponse_File {
77
- Name : proto .String (fmt . Sprintf ( "merged.openapiv3.%s" , g . format ) ),
86
+ Name : proto .String (mergedPath ),
78
87
Content : proto .String (string (contentBytes )),
79
88
},
80
89
})
0 commit comments