JSONの$refを見て1つのファイルにまとめるコマンドを部分的に使えるようにした。
JSONの$ref
を見て1つのファイルにまとめるコマンドを部分的に使えるようにした。OpenAPI documentなどを書くときに使う。
いままでは全部をまとめた形でしか使えなかった。
# いままで $ jsonknife bundle --src main.yaml $ jsonknife bundle --src team.yaml # これから $ jsonknife bundle --src main.yaml $ jsonknife bundle --src "main.yaml#/definitions/person" $ jsonknife bundle --src "main.yaml#/definitions/team" $ jsonknife bundle --src "person.yaml" --ref "#/definitions/people"
詳細
例えば以下の様なファイルがあり。
$ tree . ├── main.yaml ├── person.yaml └── team.yaml 0 directories, 3 files
ファイルの内容が以下の様な場合
main.yaml
definitions: person: $ref: "person.yaml#/definitions/person" team: $ref: "team.yaml#/definitions/team"
person.yaml
definitions: person: type: object properties: name: type: string age: type: int people: type: array items: $ref: "#/definitions/person"
team.yaml
definitions: team: type: object properties: name: type: string members: type: array items: $ref: "person.yaml#/definitions/person"
main.yamlのdefinitionsから一部だけを取り出せるようになった。
$ jsonknife bundle --src "main.yaml#/definitions/person" definitions: person: type: object properties: name: type: string age: type: int
依存しているものがあれば再帰的に取り出される(例が単純すぎて分かりづらいかもだけれど)
$ jsonknife bundle --src "main.yaml#/definitions/team" definitions: team: type: object properties: name: type: string members: type: array items: $ref: '#/definitions/person' person: type: object properties: name: type: string age: type: int
このとき余分なものは取り出されない(e.g. peron.yamlのpeople)。
--ref
オプションで指定しても良い。
$ jsonknife bundle --src "person.yaml" --ref "#/definitions/people" definitions: people: type: array items: $ref: '#/definitions/person' person: type: object properties: name: type: string age: type: int
まだpypiに対応したバージョンは上げていない。