Echolot
Командная строка и CI

echolot spec

Проверяйте документы OpenAPI линтером в CI и поддерживайте папку, следующую за спецификацией, в актуальном состоянии.

echolot spec приносит в терминал две вещи со страницы «Спецификации»: линтер и связь между спецификацией и папкой запросов, созданных по ней.

ПодкомандаЧто делает
echolot spec lintПроверяет документ OpenAPI или Swagger линтером; завершается с кодом 1, если в нём есть ошибки (или предупреждения, с --strict).
echolot spec checkПеречисляет, что изменилось в спецификации, за которой следует папка; завершается с кодом 1, если папка не актуальна.
echolot spec applyПрименяет изменения спецификации к папке, сохраняя правки, сделанные в рабочем пространстве.

echolot spec lint

echolot spec lint <file> [--strict] [--hints]

<file> — это спецификация, YAML или JSON. Файлы, на которые она ссылается через $ref, читаются из соседних с ней.

echolot spec lint Alpenglow.echolot/specs/alpenglow.yaml
0 errors, 0 warnings.

Каждая проблема — одна строка в стандартном выводе: файл, строка и столбец, серьёзность, сообщение и правило в скобках, чтобы на неё могли указать редакторы и CI. Итоговое число идёт в стандартный поток ошибок:

api.yaml:2:1: error: info needs a version (of the API, such as 1.0.0). [info]
api.yaml:7:7: error: GET /x documents no responses. [responses]
api.yaml:6:5: hint: GET /x has no operationId; code generators and agents name it from one. [operation-id]
2 errors, 0 warnings.
ПараметрЗначение
--strictСчитать неудачей и предупреждения.
--hintsТакже перечислить подсказки: хорошие практики, например operationId и описания. Подсказки никогда не считаются неудачей.

Правила те же, что на странице «Спецификации»; см. редактирование спецификаций.

echolot spec check

echolot spec check [--workspace <workspace>] <folder> [--refresh]

Папка, созданная импортом спецификации или связанная с ней в приложении, следует за этой спецификацией. check сравнивает папку со спецификацией в её нынешнем виде и перечисляет каждую операцию, которая была added, changed (с полями) или removed. Если изменение касается того, что вы правили в рабочем пространстве, об этом сказано: такие правки сохраняются.

echolot spec check -w Shop.echolot pets
added    POST /pets
changed  GET /pets/{id}  (parameters, responses)
removed  DELETE /pets/{id}
3 changes, 12 unchanged.
ПараметрЗначение
-w, --workspace <folder>Папка рабочего пространства. По умолчанию — текущая папка.
--refreshСначала заново загрузить спецификацию по её URL.

<folder> — путь к связанной папке, например pets. Используйте check в CI, чтобы сборка падала, когда запросы отстали от спецификации.

echolot spec apply

echolot spec apply [--workspace <workspace>] <folder> [--operation <operation> ...]

Записывает изменения спецификации в папку: новые операции становятся запросами, изменённые обновляются, удалённые удаляются. То, что вы правили в запросе, сохраняется. Запрос, который вы правили и чьей операции в спецификации больше нет, тоже остаётся и перестаёт следовать за спецификацией. Каждая строка говорит, что произошло:

added    pets/create-pet
updated  pets/get-pet  kept edits to headers
removed  pets/delete-pet
ПараметрЗначение
-w, --workspace <folder>Папка рабочего пространства. По умолчанию — текущая папка.
--operation <operation>Только эта операция, например "GET /pets". Можно повторять; если не указано — все изменения.

Коды выхода

КодКогда
0lint: нет ошибок (и нет предупреждений, с --strict). check: папка актуальна. apply: применено.
1lint: ошибки или предупреждения с --strict. check: есть изменения, которые нужно применить.
64Неверный параметр или папка, которая не следует за спецификацией.

На этой странице