# echolot validate (/ru/docs/cli/validate)

`echolot validate` читает каждый файл рабочего пространства и разрешает каждый запрос, ничего не отправляя. Запускайте
его первым в CI или перед коммитом, чтобы поймать испорченный файл, переменную, которой нет в одном из окружений, или
запрос GraphQL, который больше не соответствует своей схеме.

```sh
echolot validate [<workspace>] [--env <env>]
```

`<workspace>` — папка рабочего пространства; если её не указать, берётся текущая папка.

## Проверка рабочего пространства [#check-a-workspace]

```sh
echolot validate Alpenglow.echolot
```

```text
auth/who-am-i: note: {{token}} is captured from a response during the run
auth/client-credentials: note: the OAuth 2.0 token comes from the token URL (client credentials) when the request is sent
orders/list-orders: note: {{token}} is captured from a response during the run
orders/create-order: note: {{token}} is captured from a response during the run
orders/get-order: note: {{token}} is captured from a response during the run
orders/cancel-order: note: {{token}} is captured from a response during the run
29 requests, 3 environments: no problems
```

Каждая проблема — одна строка в стандартном потоке ошибок, начинающаяся с пути запроса. То, что прогон создаёт по ходу
дела (токены OAuth с клиентскими учётными данными, захваченные переменные, ответы других запросов), заранее узнать
нельзя, поэтому об этом только сообщается заметкой и никогда не считается проблемой. Последняя строка, в стандартном
выводе, считает запросы, окружения и проблемы.

Что проверяется:

- Каждый файл рабочего пространства читается: TOML разбирается, значения известны Echolot (например, тип авторизации),
  нет файла, сохранённого более новой версией Echolot.
- Каждый запрос разрешается с окружением: у каждой `{{variable}}` и каждого динамического значения есть значение.
- Запросы GraphQL, указывающие схему, проверяются по ней, с номером строки и столбца каждой проблемы. Предупреждения,
  например об устаревших полях, не считаются ошибкой.

## Параметры [#options]

| Параметр | Значение |
| --- | --- |
| `-e`, `--env <env>` | Окружение, с которым разрешать: имя его файла без `.toml` или его имя. |

Проверяйте по разу для каждого окружения, с которым вы запускаете:

```sh
echolot validate Alpenglow.echolot --env staging
```

Секретные переменные разрешаются как в прогоне: из переменных `ECHOLOT_SECRET_<NAME>` и, на Mac, из Связки ключей. См.
[секреты](/docs/cli#secrets).

## Коды выхода [#exit-codes]

| Код | Когда |
| --- | --- |
| `0` | Проблем нет. Заметки не в счёт. |
| `1` | Есть хотя бы одна проблема или рабочее пространство не удалось прочитать. |
| `64` | Окружения не существует. |
