It's common to run more than one command on an API description during the API lifecycle. The most common combination is to
lint an API description to check it meets the API guidelines, followed by a
bundle command to resolve references and produce a single file for another tool to use. This guide shows how to combine these commands.
The workflow described in this guide is illustrated in the diagram below:
Starting with an OpenAPI file, apply linting rules to check that the API description conforms to the expected standards. Only if this step is successful, proceed to bundle the file for use by another tool.
The aim of this workflow is to exit successfully only if both steps are completed with successful outcomes. If the first step,
lint, doesn't complete successfully, then do not proceed to bundle. To achieve this aim, the exit status of the commands can be used. Successful commands output a value of zero, whereas failed commands return a value greater than zero (sometimes the exact value describes the failure, although that is beyond the scope of this guide).
To combine the commands only if succesful, use the logical AND operator
&&. The first part of the command must complete successfully for the second one to be run. For example, to lint and bundle an API description in the file,
openapi.yaml, the command would be as shown below:
redocly lint openapi.yaml && redocly bundle openapi.yaml
Using this syntax, the command only completes successfully if both the
lint and the
bundle step are marked as successful. If the
lint step returns errors, then the
bundle command does not run at all. If
lint succeeds but
bundle fails, the exit code indicates the failure. Helpfully this approach means that even when used in automation, any failure state can be clearly identified, and the second step only proceeds if the first completes succesfully.