Echolot
命令行与 CI

echolot spec

在 CI 中对 OpenAPI 文档做 Lint,并让跟随规范的文件夹与规范保持同步。

echolot spec 将规范页面中的两样东西带到终端:Lint 工具,以及规范与由它创建的请求文件夹之间的链接。

子命令作用
echolot spec lint对 OpenAPI 或 Swagger 文档做 Lint;有错误时(使用 --strict 时包括警告)以 1 退出。
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]

通过导入规范创建的文件夹,或在 App 中链接到某个规范的文件夹,会跟随该规范。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。在 CI 中使用 check,可以在请求落后于规范时让构建失败。

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选项有误,或文件夹没有跟随规范。

本页内容