Дано:
OpenAPI
.Задача:
Почему бы просто не вызывать diff
и не изучить различия?
diff
‘а, и не упрощает задачу.Решить последний пункт не так уж и сложно с помощью jq --sort-keys
. Приведу простой пример:
diff \
<(jo foo=1 bar=2 baz=3 | jq --sort-keys) \
<(jo baz=4 foo=1 bar=2 | jq --sort-keys)
3c3
< "baz": 3,
---
> "baz": 4,
Однако это не ускоряет и не упрощает решение основной проблемы.
Нужно найти или реализовать инструмент, который бы показывал в понятном формате изменения в двух версиях одной и той же спецификации.
К счастью, такие решения существуют. Поверхностно обратим внимание на те инструменты, которые попали в исследование.
java
;ruby
;README
;java
;jar
из исходного кода потребуется править pom.xml
;ts
;json
и текстовые фрагменты в stdout
, делая вывод непригодным к машинному анализу.go
;README
;json
);Именно oasdiff
и был выбран в качестве основного инструмента поиска различий в контрактах OpenAPI
.
Вот, например, как можно вывести список обратно несовместимых изменений:
oasdiff breaking \
spec1.json \
spec2.json
Напоследок хочу заметить, что задача перехода с одной версии на другую решается не только с помощью понимания изменений
в контракте, но и хорошим комплектом e2e
-тестов.