| cue def foo.cue -o openapi+cue:out.cue |
| cmp out.cue expect-out.cue |
| |
| cue def openapi+cue: expect-cue-out -o - |
| |
| cue def foo.cue -o openapi:- |
| cmp stdout expect-json-out |
| |
| cue def foo.cue -o openapi+cue:- |
| cmp stdout expect-cue-out |
| |
| cue def foo.cue -o openapi+yaml:- |
| cmp stdout expect-yaml-out |
| |
| cue def -p foo openapi: openapi.json |
| cmp stdout expect-cue |
| |
| # auto mode |
| cue def -p foo openapi.json |
| cmp stdout expect-cue |
| |
| # cue to openapi |
| cue def openapi+cue: expect-cue-out -o - |
| cmp stdout expect-cue2 |
| |
| # combine |
| cue def -p foo openapi.json openapi2.json |
| cmp stdout expect-cue3 |
| |
| -- foo.cue -- |
| // Some clever title. |
| |
| $version: "v1" |
| |
| #Foo: { |
| a: int |
| b: uint & <10 |
| } |
| |
| #Bar: { |
| foo: #Foo |
| } |
| |
| -- openapi.json -- |
| { |
| "openapi": "3.0.0", |
| "info": { |
| "title": "My OpenAPI", |
| "version": "v1alpha1" |
| }, |
| "paths": {}, |
| "components": { |
| "schemas": { |
| "Bar": { |
| "type": "object", |
| "required": [ |
| "foo" |
| ], |
| "properties": { |
| "foo": { |
| "$ref": "#/components/schemas/Foo" |
| } |
| } |
| }, |
| "Foo": { |
| "type": "object", |
| "required": [ |
| "a", |
| "b" |
| ], |
| "properties": { |
| "a": { |
| "type": "integer" |
| }, |
| "b": { |
| "type": "integer", |
| "minimum": 0, |
| "exclusiveMaximum": 10 |
| } |
| } |
| } |
| } |
| } |
| } |
| -- openapi2.json -- |
| { |
| "openapi": "3.0.0", |
| "info": { |
| "title": "My OpenAPI2", |
| "version": "v1alpha1" |
| }, |
| "paths": {}, |
| "components": { |
| "schemas": { |
| "Baz": { |
| "type": "object", |
| "required": [ |
| "a", |
| "b" |
| ], |
| "properties": { |
| "a": { |
| "type": "integer" |
| }, |
| "b": { |
| "type": "integer", |
| "minimum": 0, |
| "exclusiveMaximum": 10 |
| } |
| } |
| } |
| } |
| } |
| } |
| -- expect-json-out -- |
| { |
| "openapi": "3.0.0", |
| "info": { |
| "title": "Some clever title.", |
| "version": "v1" |
| }, |
| "paths": {}, |
| "components": { |
| "schemas": { |
| "Bar": { |
| "type": "object", |
| "required": [ |
| "foo" |
| ], |
| "properties": { |
| "foo": { |
| "$ref": "#/components/schemas/Foo" |
| } |
| } |
| }, |
| "Foo": { |
| "type": "object", |
| "required": [ |
| "a", |
| "b" |
| ], |
| "properties": { |
| "a": { |
| "type": "integer" |
| }, |
| "b": { |
| "type": "integer", |
| "minimum": 0, |
| "maximum": 10, |
| "exclusiveMaximum": true |
| } |
| } |
| } |
| } |
| } |
| } |
| -- expect-yaml-out -- |
| openapi: 3.0.0 |
| info: |
| title: Some clever title. |
| version: v1 |
| paths: {} |
| components: |
| schemas: |
| Bar: |
| type: object |
| required: |
| - foo |
| properties: |
| foo: |
| $ref: '#/components/schemas/Foo' |
| Foo: |
| type: object |
| required: |
| - a |
| - b |
| properties: |
| a: |
| type: integer |
| b: |
| type: integer |
| minimum: 0 |
| maximum: 10 |
| exclusiveMaximum: true |
| -- expect-cue-out -- |
| openapi: "3.0.0" |
| info: { |
| title: "Some clever title." |
| version: "v1" |
| } |
| paths: {} |
| components: schemas: { |
| Bar: { |
| type: "object" |
| required: ["foo"] |
| properties: foo: $ref: "#/components/schemas/Foo" |
| } |
| Foo: { |
| type: "object" |
| required: ["a", "b"] |
| properties: { |
| a: type: "integer" |
| b: { |
| type: "integer" |
| minimum: 0 |
| maximum: 10 |
| exclusiveMaximum: true |
| } |
| } |
| } |
| } |
| -- expect-cue -- |
| // My OpenAPI |
| package foo |
| |
| info: { |
| title: *"My OpenAPI" | string |
| version: *"v1alpha1" | string |
| } |
| #Bar: { |
| foo: #Foo |
| ... |
| } |
| #Foo: { |
| a: int |
| b: uint & <10 |
| ... |
| } |
| -- expect-cue2 -- |
| info: { |
| title: *"Some clever title." | string |
| version: *"v1" | string |
| } |
| #Bar: { |
| foo: #Foo |
| ... |
| } |
| #Foo: { |
| a: int |
| b: uint & <10 |
| ... |
| } |
| -- expect-cue2 -- |
| info: { |
| title: *"Some clever title." | string |
| version: *"v1" | string |
| } |
| #Bar: { |
| foo: #Foo |
| ... |
| } |
| #Foo: { |
| a: int |
| b: uint & <10 |
| ... |
| } |
| -- expect-cue3 -- |
| // My OpenAPI |
| |
| // My OpenAPI2 |
| package foo |
| |
| info: { |
| title: (*"My OpenAPI" | string) & (*"My OpenAPI2" | string) |
| version: (*"v1alpha1" | string) & (*"v1alpha1" | string) |
| } |
| #Bar: { |
| foo: #Foo |
| ... |
| } |
| #Foo: { |
| a: int |
| b: uint & <10 |
| ... |
| } |
| #Baz: { |
| a: int |
| b: uint & <10 |
| ... |
| } |
| -- expect-out.cue -- |
| openapi: "3.0.0" |
| info: { |
| title: "Some clever title." |
| version: "v1" |
| } |
| paths: {} |
| components: schemas: { |
| Bar: { |
| type: "object" |
| required: ["foo"] |
| properties: foo: $ref: "#/components/schemas/Foo" |
| } |
| Foo: { |
| type: "object" |
| required: ["a", "b"] |
| properties: { |
| a: type: "integer" |
| b: { |
| type: "integer" |
| minimum: 0 |
| maximum: 10 |
| exclusiveMaximum: true |
| } |
| } |
| } |
| } |