Metadata-Version: 2.5
Name: zoo-kcl-check-cli
Version: 0.1.0
Summary: Strict local checks for Zoo / KittyCAD KCL
Project-URL: Repository, https://github.com/gavroman/zoo-kcl-check
Project-URL: Issues, https://github.com/gavroman/zoo-kcl-check/issues
License-Expression: MIT
License-File: LICENSE
Requires-Python: <3.15,>=3.11
Requires-Dist: zoo-kcl==0.3.191
Provides-Extra: binary
Requires-Dist: pyinstaller==6.22.3; extra == 'binary'
Provides-Extra: dev
Requires-Dist: build==1.6.1; extra == 'dev'
Requires-Dist: pytest==9.1.1; extra == 'dev'
Requires-Dist: ruff==0.17.0; extra == 'dev'
Description-Content-Type: text/markdown

# zoo-kcl-check-cli

Проверка файлов **Zoo / KittyCAD KCL** из терминала: форматирование, стиль,
ошибки выполнения и ограничения эскизов. Это язык CAD-моделирования Zoo.

Проверки работают локально, бесплатно, без Zoo-аккаунта и токенов.
Выполнение использует имитацию CAD-движка: успешная проверка кода **не подтверждает
валидность настоящей 3D-геометрии**.

## Установка

Понадобится [uv](https://docs.astral.sh/uv/getting-started/installation/) —
он установит инструмент и его зависимости. На macOS с Homebrew:

```sh
brew install uv
```

Склонируйте проект и установите команду:

```sh
git clone https://github.com/gavroman/zoo-kcl-check.git
cd zoo-kcl-check
uv tool install --python 3.13 .
uv tool update-shell
```

Точка `.` означает «установить проект из текущей папки».
Если репозиторий уже скачан, выполняйте только две команды `uv` из его папки.
Откройте новый терминал. Теперь команда доступна из любой папки:

```sh
kcl-check --help
```

Python 3.13 uv найдёт или скачает сам. Сеть нужна при установке;
после неё проверки работают без сети.

## Как пользоваться

Откройте папку своей CAD-модели и запустите нужную проверку:

```sh
kcl-check lint main.kcl
kcl-check execute main.kcl
kcl-check sketches main.kcl
```

| Команда | Что проверяет |
|---|---|
| `lint` | Синтаксис и стиль |
| `execute` | Имена, аргументы, типы, единицы измерения и `assert` |
| `sketches` | Полностью ли определены эскизы и нет ли конфликтов ограничений |
| `format` | Форматирует исходный текст |

Для форматирования с записью в файл:

```sh
kcl-check format main.kcl --write
```

Без `--write` команда печатает результат и сохраняет исходник.
Чтобы только проверить формат:

```sh
kcl-check format main.kcl --check
```

Можно передавать папку: `kcl-check lint .` проверит все `.kcl` внутри.
`execute .` и `sketches .` запускают `main.kcl`; если в `project.toml` указан
`default_file`, запускается он. Импорты соседних KCL-файлов поддерживаются.
Символические ссылки при обходе пропускаются.

**Проверки строгие:** предупреждение тоже означает неуспех. Недоопределённый или
конфликтующий эскиз делает команду `sketches` неуспешной. Прочитать параметры
конкретной команды можно через `kcl-check sketches --help`.

## Для скриптов и coding-агентов

```sh
kcl-check execute main.kcl --json
```

`--json` возвращает один JSON-объект с результатом и диагностикой.
`--timeout 30` задаёт лимит на всю команду в секундах; по умолчанию — 60.

| Код завершения | Значение |
|---|---|
| `0` | Проверка прошла |
| `1` | Есть замечания или отличается формат при `--check` |
| `2` | Ошибка установки/входа, таймаут или сбой инструмента |
| `130` | Прерывание пользователем |

## Обновление и удаление

После скачивания новой версии репозитория выполните из его папки:

```sh
uv tool install --reinstall --python 3.13 .
```

Удаление:

```sh
uv tool uninstall zoo-kcl-check-cli
```

## Совместимость и разработка

Проверено на macOS ARM64 с Python 3.13. Для Windows x64 и Linux glibc x64/ARM64
есть готовые версии зависимости Zoo KCL; сам CLI на них пока не проверен.

Ошибки и предложения — через [GitHub Issues](https://github.com/gavroman/zoo-kcl-check/issues),
изменения — через pull request.
[Настройка разработки, тесты и сборка](docs/development.md).

## Лицензия

[MIT](LICENSE): можно бесплатно использовать, изменять и распространять код,
включая коммерческие проекты. Сохраняйте текст лицензии и уведомление об авторстве.
