Skip to content

Commit e4404e0

Browse files
feat: add open-api v3 proto3 and base folder
1 parent 3a7710e commit e4404e0

20 files changed

+6519
-18
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ vendor
1313

1414
# Generated travis files
1515
.travis.yml
16+
17+
protoc-gen-openapiv3

MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ use_repo(
5454
go_deps,
5555
"com_github_antihax_optional",
5656
"com_github_bazelbuild_buildtools_v7",
57+
"com_github_getkin_kin_openapi",
5758
"com_github_golang_protobuf",
5859
"com_github_google_go_cmp",
5960
"com_github_rogpeppe_fastuuid",

WORKSPACE

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,97 @@ http_archive(
109109
],
110110
)
111111

112-
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
112+
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
113113

114114
# Use gazelle to declare Go dependencies in Bazel.
115115
# gazelle:repository_macro repositories.bzl%go_repositories
116116

117117
load("//:repositories.bzl", "go_repositories")
118118

119+
go_repository(
120+
name = "com_github_getkin_kin_openapi",
121+
importpath = "github.com/getkin/kin-openapi",
122+
sum = "h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk=",
123+
version = "v0.132.0",
124+
)
125+
126+
go_repository(
127+
name = "com_github_go_openapi_jsonpointer",
128+
importpath = "github.com/go-openapi/jsonpointer",
129+
sum = "h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=",
130+
version = "v0.21.0",
131+
)
132+
133+
go_repository(
134+
name = "com_github_go_openapi_swag",
135+
importpath = "github.com/go-openapi/swag",
136+
sum = "h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=",
137+
version = "v0.23.0",
138+
)
139+
140+
go_repository(
141+
name = "com_github_go_test_deep",
142+
importpath = "github.com/go-test/deep",
143+
sum = "h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=",
144+
version = "v1.0.8",
145+
)
146+
147+
go_repository(
148+
name = "com_github_gorilla_mux",
149+
importpath = "github.com/gorilla/mux",
150+
sum = "h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=",
151+
version = "v1.8.0",
152+
)
153+
154+
go_repository(
155+
name = "com_github_josharian_intern",
156+
importpath = "github.com/josharian/intern",
157+
sum = "h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=",
158+
version = "v1.0.0",
159+
)
160+
161+
go_repository(
162+
name = "com_github_mailru_easyjson",
163+
importpath = "github.com/mailru/easyjson",
164+
sum = "h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=",
165+
version = "v0.7.7",
166+
)
167+
168+
go_repository(
169+
name = "com_github_mohae_deepcopy",
170+
importpath = "github.com/mohae/deepcopy",
171+
sum = "h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=",
172+
version = "v0.0.0-20170929034955-c48cc78d4826",
173+
)
174+
175+
go_repository(
176+
name = "com_github_oasdiff_yaml",
177+
importpath = "github.com/oasdiff/yaml",
178+
sum = "h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY=",
179+
version = "v0.0.0-20250309154309-f31be36b4037",
180+
)
181+
182+
go_repository(
183+
name = "com_github_oasdiff_yaml3",
184+
importpath = "github.com/oasdiff/yaml3",
185+
sum = "h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c=",
186+
version = "v0.0.0-20250309153720-d2182401db90",
187+
)
188+
189+
go_repository(
190+
name = "com_github_perimeterx_marshmallow",
191+
importpath = "github.com/perimeterx/marshmallow",
192+
sum = "h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=",
193+
version = "v1.1.5",
194+
)
195+
196+
go_repository(
197+
name = "com_github_ugorji_go_codec",
198+
importpath = "github.com/ugorji/go/codec",
199+
sum = "h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=",
200+
version = "v1.2.7",
201+
)
202+
119203
go_repositories()
120204

121205
# This must be invoked after our explicit dependencies

go.mod

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.23.0
44

55
require (
66
github.com/antihax/optional v1.0.0
7+
github.com/getkin/kin-openapi v0.132.0
78
github.com/google/go-cmp v0.7.0
89
github.com/rogpeppe/fastuuid v1.2.0
910
golang.org/x/oauth2 v0.30.0
@@ -16,8 +17,14 @@ require (
1617
)
1718

1819
require (
19-
github.com/kr/pretty v0.3.1 // indirect
20+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
21+
github.com/go-openapi/swag v0.23.0 // indirect
22+
github.com/josharian/intern v1.0.0 // indirect
23+
github.com/mailru/easyjson v0.7.7 // indirect
24+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
25+
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect
26+
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect
27+
github.com/perimeterx/marshmallow v1.1.5 // indirect
2028
golang.org/x/net v0.37.0 // indirect
2129
golang.org/x/sys v0.31.0 // indirect
22-
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2330
)

go.sum

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,51 @@
11
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
22
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
3-
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
3+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
4+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5+
github.com/getkin/kin-openapi v0.132.0 h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk=
6+
github.com/getkin/kin-openapi v0.132.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58=
47
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
58
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
69
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
710
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
11+
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
12+
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
13+
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
14+
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
15+
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
16+
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
817
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
918
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
1019
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
1120
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
1221
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
1322
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
14-
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
23+
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
24+
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
1525
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
1626
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
17-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
18-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
1927
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
2028
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
21-
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
29+
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
30+
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
31+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
32+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
33+
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY=
34+
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw=
35+
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c=
36+
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o=
37+
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
38+
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
39+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
40+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2241
github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
2342
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
24-
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
25-
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
43+
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
44+
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
45+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
46+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
47+
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
48+
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
2649
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
2750
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
2851
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=

protoc-gen-openapiv3/BUILD.bazel

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
2+
3+
package(default_visibility = ["//visibility:private"])
4+
5+
go_library(
6+
name = "protoc-gen-openapiv3_lib",
7+
srcs = ["main.go"],
8+
importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv3",
9+
deps = ["//utilities"],
10+
)
11+
12+
go_binary(
13+
name = "protoc-gen-openapiv3",
14+
embed = [":protoc-gen-openapiv3_lib"],
15+
visibility = ["//visibility:public"],
16+
)
17+
#
18+
# go_test(
19+
# name = "protoc-gen-openapiv3_test",
20+
# size = "small",
21+
# srcs = ["main_test.go"],
22+
# embed = [":protoc-gen-openapiv3_lib"],
23+
# )
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
package(default_visibility = ["//protoc-gen-openapiv3:__subpackages__"])
4+
5+
go_library(
6+
name = "genopenapi",
7+
srcs = [
8+
"doc.go",
9+
"format.go",
10+
"generator.go",
11+
"helpers.go",
12+
"helpers_go111_old.go",
13+
"naming.go",
14+
"template.go",
15+
"types.go",
16+
],
17+
importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv3/internal/genopenapi",
18+
deps = [
19+
"//internal/casing",
20+
"//internal/descriptor",
21+
"//internal/generator",
22+
"//protoc-gen-openapiv3/options",
23+
"@com_github_getkin_kin_openapi",
24+
"@in_gopkg_yaml_v3//:yaml_v3",
25+
"@org_golang_google_genproto_googleapis_api//annotations",
26+
"@org_golang_google_genproto_googleapis_api//visibility",
27+
"@org_golang_google_genproto_googleapis_rpc//status",
28+
"@org_golang_google_grpc//grpclog",
29+
"@org_golang_google_protobuf//encoding/protojson",
30+
"@org_golang_google_protobuf//proto",
31+
"@org_golang_google_protobuf//reflect/protodesc",
32+
"@org_golang_google_protobuf//types/descriptorpb",
33+
"@org_golang_google_protobuf//types/known/anypb",
34+
"@org_golang_google_protobuf//types/known/structpb",
35+
"@org_golang_google_protobuf//types/pluginpb",
36+
"@org_golang_x_text//cases",
37+
"@org_golang_x_text//language",
38+
],
39+
)
40+
41+
go_test(
42+
name = "genopenapi_test",
43+
size = "small",
44+
srcs = [
45+
"cycle_test.go",
46+
"format_test.go",
47+
"generator_test.go",
48+
"helpers_test.go",
49+
"naming_test.go",
50+
"template_fuzz_test.go",
51+
"template_test.go",
52+
"types_test.go",
53+
],
54+
data = glob(["testdata/**"]),
55+
embed = [":genopenapi"],
56+
deps = [
57+
"//internal/descriptor",
58+
"//internal/descriptor/openapiconfig",
59+
"//internal/httprule",
60+
"//protoc-gen-openapiv3/options",
61+
"//runtime",
62+
"@com_github_google_go_cmp//cmp",
63+
"@in_gopkg_yaml_v3//:yaml_v3",
64+
"@org_golang_google_genproto_googleapis_api//annotations",
65+
"@org_golang_google_genproto_googleapis_api//visibility",
66+
"@org_golang_google_protobuf//encoding/protojson",
67+
"@org_golang_google_protobuf//encoding/prototext",
68+
"@org_golang_google_protobuf//proto",
69+
"@org_golang_google_protobuf//reflect/protodesc",
70+
"@org_golang_google_protobuf//reflect/protoreflect",
71+
"@org_golang_google_protobuf//reflect/protoregistry",
72+
"@org_golang_google_protobuf//types/descriptorpb",
73+
"@org_golang_google_protobuf//types/known/anypb",
74+
"@org_golang_google_protobuf//types/known/durationpb",
75+
"@org_golang_google_protobuf//types/known/emptypb",
76+
"@org_golang_google_protobuf//types/known/fieldmaskpb",
77+
"@org_golang_google_protobuf//types/known/structpb",
78+
"@org_golang_google_protobuf//types/known/timestamppb",
79+
"@org_golang_google_protobuf//types/known/wrapperspb",
80+
"@org_golang_google_protobuf//types/pluginpb",
81+
],
82+
)
83+
84+
alias(
85+
name = "go_default_library",
86+
actual = ":genopenapiv3",
87+
visibility = ["//protoc-gen-openapiv3:__subpackages__"],
88+
)
89+
90+
go_library(
91+
name = "genopenapiv3",
92+
srcs = ["openapi_doc.go"],
93+
importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv3/internal/genopenapiv3",
94+
deps = ["@com_github_getkin_kin_openapi//openapi3"],
95+
)

0 commit comments

Comments
 (0)