Skip to content

Commit 38b1273

Browse files
authored
Add support for deprecated properties with named schemas (#26)
1 parent f3fc49f commit 38b1273

File tree

7 files changed

+27
-15
lines changed

7 files changed

+27
-15
lines changed

.github/workflows/gorelease.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,19 @@ jobs:
2727
id: gorelease
2828
run: |
2929
test -e ~/go/bin/gorelease || go install golang.org/x/exp/cmd/gorelease@latest
30-
gorelease
31-
OUTPUT=$(gorelease)
30+
OUTPUT=$(gorelease || exit 0)
3231
OUTPUT="${OUTPUT//'%'/'%25'}"
3332
OUTPUT="${OUTPUT//$'\n'/'%0A'}"
3433
OUTPUT="${OUTPUT//$'\r'/'%0D'}"
3534
echo "::set-output name=report::$OUTPUT"
36-
- name: Comment Gorelase Report
35+
- name: Comment Report
3736
uses: marocchino/sticky-pull-request-comment@v2
3837
with:
3938
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4039
header: gorelease
4140
message: |
4241
### Exported API Changes Report
4342
44-
```
43+
<pre>
4544
${{ steps.gorelease.outputs.report }}
46-
```
45+
</pre>

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ module github.com/swaggest/openapi-go
33
go 1.13
44

55
require (
6-
github.com/bool64/dev v0.1.36
6+
github.com/bool64/dev v0.1.37
77
github.com/stretchr/testify v1.7.0
88
github.com/swaggest/assertjson v1.6.6
9-
github.com/swaggest/jsonschema-go v0.3.20
9+
github.com/swaggest/jsonschema-go v0.3.22
1010
github.com/swaggest/refl v1.0.0
1111
gopkg.in/yaml.v2 v2.4.0
1212
)

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
github.com/bool64/dev v0.1.17/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU=
22
github.com/bool64/dev v0.1.25/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU=
33
github.com/bool64/dev v0.1.35/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU=
4-
github.com/bool64/dev v0.1.36 h1:ZUyNrmb383OeHUSjtncODyq9RSLoDpEWxHvo5yQGhis=
5-
github.com/bool64/dev v0.1.36/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU=
4+
github.com/bool64/dev v0.1.37 h1:/c8U4emt4xjMDx8Au+POOYo5LJIw+Mzi4e48j5CmGQo=
5+
github.com/bool64/dev v0.1.37/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU=
66
github.com/bool64/shared v0.1.3 h1:gj7XZPYa1flQsCg3q9AIju+W2A1jaexK0fdFu2XtaG0=
77
github.com/bool64/shared v0.1.3/go.mod h1:RF1p1Oi29ofgOvinBpetbF5mceOUP3kpMkvLbWOmtm0=
88
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -59,8 +59,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
5959
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
6060
github.com/swaggest/assertjson v1.6.6 h1:QO//07sfx9KR6h4t/8L+I5qOWUifLnu8gblhFYwkVQM=
6161
github.com/swaggest/assertjson v1.6.6/go.mod h1:HNfIAKxJJkeDmtrBU01dcWvEFjhghO96gx9Eo4rRjIc=
62-
github.com/swaggest/jsonschema-go v0.3.20 h1:ziunzl/iu5gm7OPWI9dkLOPte4GrZIkRhQNnycL18IA=
63-
github.com/swaggest/jsonschema-go v0.3.20/go.mod h1:kTYngQ48oh1Wx+exL8EHTCSpheYX9JY/IgtOp9eVcZY=
62+
github.com/swaggest/jsonschema-go v0.3.22 h1:9tdd1vc6jF+I6Uy4lIJFshoekZJ3uOowhAS7Ed1DxLg=
63+
github.com/swaggest/jsonschema-go v0.3.22/go.mod h1:UMMhyRN4FIUjy6ivVycElnWq+C7ql/1+L2R0BG01LkE=
6464
github.com/swaggest/refl v1.0.0 h1:yAFdjLQjmFuH4FHiD+HMaDUbF4cW0PbH5uhNoN4bme4=
6565
github.com/swaggest/refl v1.0.0/go.mod h1:acYd5x8NNxivp+ZHdRZKJYz66n/qjo3Q9Sa/jAivljQ=
6666
github.com/yosuke-furukawa/json5 v0.1.2-0.20201207051438-cf7bb3f354ff/go.mod h1:sw49aWDqNdRJ6DYUtIQiaA3xyj2IL9tjeNYmX2ixwcU=

openapi3/_testdata/openapi.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"schema":{"type":"integer","description":"Query parameter."}
1515
},
1616
{"name":"in_path","in":"path","required":true,"schema":{"type":"integer"}},
17-
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string"}},
17+
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string","deprecated":true}},
1818
{"name":"in_header","in":"header","schema":{"type":"number"}}
1919
],
2020
"responses":{
@@ -58,7 +58,7 @@
5858
"schema":{"type":"array","items":{"type":"string"}}
5959
},
6060
{"name":"in_path","in":"path","required":true,"schema":{"type":"integer"}},
61-
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string"}},
61+
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string","deprecated":true}},
6262
{"name":"in_header","in":"header","schema":{"type":"number"}},
6363
{"name":"uuid","in":"header","schema":{"$ref":"#/components/schemas/Openapi3TestUUID"}}
6464
],

openapi3/_testdata/openapi_req.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"schema":{"type":"integer","description":"Query parameter."}
1414
},
1515
{"name":"in_path","in":"path","required":true,"schema":{"type":"integer"}},
16-
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string"}},
16+
{"name":"in_cookie","in":"cookie","deprecated":true,"schema":{"type":"string","deprecated":true}},
1717
{"name":"in_header","in":"header","schema":{"type":"number"}}
1818
],
1919
"responses":{"204":{"description":"No Content"}}

openapi3/_testdata/openapi_req_array.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"Openapi3TestGetReq":{
1818
"required":["q1","q3"],"type":"object",
1919
"properties":{
20-
"c":{"type":"string"},"h":{"type":"number"},"p":{"type":"integer"},
20+
"c":{"type":"string","deprecated":true},"h":{"type":"number"},"p":{"type":"integer"},
2121
"q1":{"type":"integer","description":"Query parameter."},"q3":{"type":"integer","description":"Query parameter."}
2222
}
2323
}

openapi3/jsonschema.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,19 @@ func (s *SchemaOrRef) FromJSONSchema(schema jsonschema.SchemaOrBool) {
186186

187187
js := schema.TypeObject
188188
if js.Ref != nil {
189+
if deprecated, ok := js.ExtraProperties["deprecated"].(bool); ok && deprecated {
190+
s.Schema = (&Schema{}).WithAllOf(
191+
SchemaOrRef{
192+
Schema: (&Schema{}).WithDeprecated(true),
193+
},
194+
SchemaOrRef{
195+
SchemaReference: &SchemaReference{Ref: *js.Ref},
196+
},
197+
)
198+
199+
return
200+
}
201+
189202
s.SchemaReference = &SchemaReference{Ref: *js.Ref}
190203

191204
return

0 commit comments

Comments
 (0)