--- title: Справочник CLI description: "Лаунчер apex: перечисление, диспетчеризация, справка и коды возврата." weight: 31 --- Лаунчер — это скрипт на Python из стандартной библиотеки, `commons/apex` (попадает в `PATH` после выполнения `init.sh`). Все операции выполняются над локальным checkout: аргумента узла не существует. ## Формы вызова {#invocation} | Команда | Поведение | |---|---| | `apex` или `apex --help` | Перечислить каждое доступное [действие](/apex/glossary#action) с его кратким описанием; выход с кодом `0`. | | `apex / [args...]` | Выполнить одно действие. | | `apex / --help` | Вывести справку argparse для действия, сгенерированную из `METADATA`; выход с кодом `0`. | Перечисление помечает каждую запись источником [оверлея](/apex/glossary#overlay) — без метки (commons), `(local)`, `(local override)` — и добавляет `[DISABLED: reason]`, если модуль объявляет `DISABLED`. Перечисление использует статическое сканирование через `ast`, поэтому код самих действий не выполняется. ## Раскладка и разрешение путей {#layout} При запуске лаунчер определяет, в какой из двух раскладок он находится: - **Checkout узла** — лаунчер находится в каталоге `commons/`, родительский каталог которого содержит `node.env`. Родительский каталог служит корнем репозитория; `proprietaries/actions/` — дерево оверлея; [идентичность узла](/apex/glossary#node-identity) разрешается перед диспетчеризацией, а любые предупреждения об идентичности выводятся первыми в логе. - **Автономный commons** — любое другое расположение. Каталог commons служит собственным корнем, оверлей отсутствует, а `ctx.node` равен `None` (строки лога содержат префикс `global`). `sys.path` формируется следующим образом: каталог commons (позволяет импортировать `engine`), затем `commons/vendor/` при наличии и `../proprietaries/` в checkout узла (позволяет импортировать проприетарный код из `lib/`). ## Коды возврата {#exit-codes} | Код | Источник | |---|---| | `0` | Действие вернуло `0` или нецелое значение; вызовы `--help`. | | `1` | Неизвестное действие; отключённое действие; необработанное исключение (выводится в лог как `Type: message` с префиксом контекста); нецелый `SystemExit`. | | `64` | Ошибка использования при разборе аргументов (`EX_USAGE`). | | `65` | Ошибка данных, вызванная библиотеками движка (`EX_DATAERR`) — например, пустой результат рендеринга crontab. | | `66` | Неполный или отсутствующий ввод (`EX_NOINPUT`) — например, не заданы поля идентичности или отсутствует каталог конфигурации ufw. | Любой другой код — это значение, которое вернуло или вызвало само действие. ## Формат лога {#log-format} Весь вывод движка и действий оформляется по единому шаблону: ```text [] [/] [LEVEL] message ``` `LEVEL` — это `INFO`, `WARN`, `ERROR` или `SUCCESS`. Строки `ERROR` выводятся в stderr, а остальные — в stdout. Такой формат удобен для cron: упрощает сбор логов и отправку оповещений. --- **См. также:** - [Концепция: Действия и оверлей](/apex/concepts/actions-and-overlay) - [Справочник: Действия](/apex/reference/actions) - [Справочник: API движка](/apex/reference/engine-api)