# catalib watch

Следит за исходниками, пересобирает плагин при каждом изменении и опционально доставляет его на устройство.

```bash
catalib watch [--project DIR] [--deploy] [--serial SERIAL] [--port PORT] [--adb|--no-adb] [--poll N]
```

## Опции

| Опция                | По умолчанию | Назначение                                                             |
| -------------------- | ------------ | ---------------------------------------------------------------------- |
| `--project`, `-p`    | `.`          | каталог проекта плагина                                                |
| `--deploy`           | выкл.        | деплоить на устройство после каждой сборки                             |
| `--serial`           | —            | серийный номер устройства (если их несколько)                          |
| `--port`             | `42690`      | порт dev server: локальный для `adb forward` либо прямой на устройстве |
| `--adb` / `--no-adb` | авто         | использовать ли `adb` для деплоя                                       |
| `--poll`             | `1.0`        | интервал поллинга в секундах (только без `watchfiles`)                 |

`--adb/--no-adb` по умолчанию определяется автоматически: на ПК — через `adb forward`, на самом устройстве (Termux/Pydroid) — напрямую к `127.0.0.1:42690` без `adb` (его там нет и не нужно). Подробнее — [Разработка на устройстве](/catalib/rukovodstvo/android.md).

## Поведение

1. Загружает манифест (если невалиден — выходит с кодом `1`).
2. Делает первую сборку.
3. Следит за каталогом `src` и файлом `catalib.toml`. Бэкенд слежения — `watchfiles`, если установлен (мгновенный), иначе stdlib-поллинг с интервалом `--poll` (по умолчанию 1 с). Команда работает **без** `watchfiles` — это важно на телефоне (Termux/Pydroid), где Rust- бэкенд не собрать; см. [Разработка на устройстве](/catalib/rukovodstvo/android.md).
4. На каждое изменение — пересобирает; при `--deploy` — доставляет на устройство (`write_plugin` + `reload_plugin`, и `set_plugin_enabled` при первом деплое).
5. `Ctrl+C` — выход.

Активный бэкенд печатается в первой строке (`бэкенд: watchfiles` или `бэкенд: polling`).

## Пример

```bash
$ catalib watch --deploy
Слежу за hello/src и hello/catalib.toml. Ctrl+C — выход.
Собрано: hello/dist/hello.py (4 модулей)
Задеплоено на устройство (включён=True)
# ... правите src/plugin.py ...
Собрано: hello/dist/hello.py (4 модулей)
Задеплоено на устройство (включён=True)
```

Ошибки сборки/деплоя печатаются, но **watch не падает** — поправьте код и сохраните файл, пересборка произойдёт автоматически:

```
Сборка не удалась: каталоги с модулями без __init__.py: core
```

## Требования для `--deploy`

* запущенный exteraGram с включённым режимом разработчика (dev server слушает порт 42690);
* доступный `adb` в `PATH`.

Подробнее — [Подготовка устройства](/catalib/deploi/device-setup.md). Без `--deploy` устройство не нужно — это просто авто-пересборка.

## Замечание про включение

На некоторых сборках exteraGram программный `set_plugin_enabled` не применяется без открытого экрана плагинов в UI. Если плагин не включился автоматически — включите его один раз в настройках плагинов exteraGram, дальше `watch --deploy` будет обновлять код по месту.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://raito-kyokai.gitbook.io/catalib/cli/watch.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
