# 🚀 GLT CLI
**CLI-инструмент для компиляции GLT-проектов** - превращает декларативные `.glt` файлы в готовые репозитории с кодом, Docker и CI за один проход.
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
## ✨ Возможности
- 🔧 **Компиляция проектов** - из `.glt` в готовый репозиторий
- 🔌 **Архитектура плагинов** - расширяемая система
- 📚 **Автогенерация документации** - CLI, API, проект
- 🔄 **Семантические релизы** - автоматические версии
- 🔒 **Безопасность** - SOPS шифрование
- 🌐 **IPFS кэш** - кэширование шаблонов
- 🐳 **Docker поддержка** - готовые образы
- 🚀 **CI/CD** - GitHub Actions
## 🚀 Быстрая установка
### Из PyPI (рекомендуется)
```bash
pip install glt-cli
```
### Из исходного кода
```bash
# Клонирование репозитория
git clone https://github.com/Quantum-Insight-Lab/glt-cli.git
cd glt-cli
# Установка в режиме разработки
pip install -e .
# Или установка зависимостей и запуск
pip install -r requirements.txt
python -m glt_cli.main --help
```
### Из файла requirements.txt
```bash
# Скачайте requirements.txt и установите
pip install -r requirements.txt
python -m glt_cli.main --help
```
## 📋 Требования
- Python 3.12+
- Git
- Docker (опционально, для генерации Docker образов)
## 🔧 Использование
### Основные команды
```bash
# Компиляция проекта
glt compile my-project --output dist/
# Валидация конфигурации
glt validate my-project
# Информация о проекте
glt info my-project
# Управление кэшем
glt cache stats
glt cache clear
# Управление безопасностью
glt security check
glt security encrypt secrets.yaml
# Управление плагинами
glt plugins list
glt plugins info
# Обновление CLI
glt update
# Семантические релизы
glt release analyze
glt release create
# Генерация документации
glt docs generate
```
### Пример GLT проекта
Создайте файл `.glt` в корне вашего проекта:
```yaml
version: 0.6
meta:
name: my-awesome-project
wave: Φ-21
owner: @developer
visibility: private
repo:
url: https://github.com/username/my-awesome-project.git
branch_protect: true
gpg_sign: true
semantic_release: true
stack:
runtime: python:3.12-slim
deps:
- fastapi>=0.100
- uvicorn>=0.20
dev_deps:
- pytest
- black
- ruff
infra:
cache_ipfs: /dns4/mesh.glt/ipfs/
observability: prom+grafana
security:
sops:
kms: aws-kms://arn:aws:kms:us-west-2:123456789:key/abc-def
enforce_in_ci: true
pre_commit:
- detect-secrets
- ruff
- mypy
```
Затем скомпилируйте:
```bash
glt compile . --output dist/
```
## 🏗️ Архитектура
GLT CLI состоит из трех основных волн:
### 🌊 Волна Φ-13 - Базовая функциональность
- Typer CLI приложение
- Загрузка и валидация GLT конфигурации
- Jinja2 рендеринг шаблонов
- Базовые тесты
### 🌊 Волна Φ-21 - Инфраструктура и безопасность
- Генерация Docker образов
- CI/CD workflows
- SOPS шифрование
- IPFS кэш шаблонов
- Direnv поддержка
### 🌊 Волна Φ-34 - Расширяемость и автоматизация
- Архитектура плагинов
- Автообновление CLI
- Семантические релизы
- Автогенерация документации
- E2E тестирование
## 🔌 Плагины
GLT CLI поддерживает расширяемую архитектуру плагинов:
### Встроенные плагины
- **TelemetryPlugin** - сбор метрик
- **ValidationPlugin** - дополнительная валидация
- **OptimizationPlugin** - оптимизация компиляции
### Создание собственного плагина
```python
from glt_cli.plugins import BasePlugin
from typing import Dict, Any
class MyPlugin(BasePlugin):
def get_name(self) -> str:
return "my_plugin"
def get_version(self) -> str:
return "1.0.0"
def on_pre_compile(self, context: Dict[str, Any]) -> None:
print("Мой плагин выполняется перед компиляцией")
def on_post_compile(self, context: Dict[str, Any]) -> None:
print("Мой плагин выполняется после компиляции")
```
Сохраните в `plugins/my_plugin.py` и загрузите:
```bash
glt plugins load
```
## 🔄 Автообновление
GLT CLI автоматически проверяет обновления:
```bash
# Проверка обновлений
glt update
# Обновление до конкретной версии
glt update 1.0.0
```
## 📝 Семантические релизы
Автоматическое создание релизов на основе коммитов:
```bash
# Анализ коммитов
glt release analyze
# Создание релиза
glt release create
# Тестовый релиз
glt release create --dry-run
```
## 📚 Документация
Автоматическая генерация документации:
```bash
# Вся документация
glt docs generate
# Только CLI документация
glt docs cli
# Только API документация
glt docs api
```
## 🧪 Разработка
### Установка для разработки
```bash
git clone https://github.com/Quantum-Insight-Lab/glt-cli.git
cd glt-cli
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/macOS
# или
venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements-dev.txt
# Установка в режиме разработки
pip install -e .
```
### Запуск тестов
```bash
# Все тесты
pytest
# С покрытием
pytest --cov=glt_cli
# Конкретные тесты
pytest tests/test_core.py
```
### Линтинг и форматирование
```bash
# Форматирование кода
black glt_cli/
# Линтинг
ruff check glt_cli/
# Проверка типов
mypy glt_cli/
```
### Сборка пакета
```bash
# Сборка
python -m build
# Проверка пакета
twine check dist/*
# Загрузка в PyPI (только для релизов)
twine upload dist/*
```
## 📦 Установка из файла
Если у вас есть файл с GLT CLI, вы можете установить его несколькими способами:
### 1. Из requirements.txt
```bash
pip install -r requirements.txt
python -m glt_cli.main --help
```
### 2. Из исходного кода
```bash
# Распакуйте архив или клонируйте репозиторий
cd glt-cli
# Установите зависимости
pip install -r requirements.txt
# Запустите CLI
python -m glt_cli.main --help
```
### 3. Создание исполняемого файла
```bash
# Установите pyinstaller
pip install pyinstaller
# Создайте исполняемый файл
pyinstaller --onefile --name glt glt_cli/main.py
# Используйте
./dist/glt --help
```
## 🤝 Вклад в проект
1. Форкните репозиторий
2. Создайте ветку для новой функции
3. Внесите изменения
4. Добавьте тесты
5. Отправьте pull request
## 📄 Лицензия
MIT License - см. файл [LICENSE](LICENSE) для деталей.
## 🆘 Поддержка
- 📖 [Документация](https://github.com/Quantum-Insight-Lab/glt-cli#readme)
- 🐛 [Issues](https://github.com/Quantum-Insight-Lab/glt-cli/issues)
- 💬 [Discussions](https://github.com/Quantum-Insight-Lab/glt-cli/discussions)
## 🏢 О проекте
GLT CLI разработан командой **Quantum Insight Lab** для упрощения декларативной разработки инфраструктуры и приложений.
---
**GLT CLI - декларативная разработка стала проще!** 🚀
Raw data
{
"_id": null,
"home_page": null,
"name": "glt-compiler-tool",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "Chief Philologist <chief@quantum-insight-lab.com>",
"keywords": "glt, cli, compiler, templates, docker, ci-cd",
"author": null,
"author_email": "Quantum Insight Lab <dev@quantum-insight-lab.com>",
"download_url": "https://files.pythonhosted.org/packages/d6/5d/516783abe7e0a86664785f89e780773cd00fcb8d4b8ae6814372d561199d/glt_compiler_tool-0.6.0.tar.gz",
"platform": null,
"description": "# \ud83d\ude80 GLT CLI\n\n**CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 GLT-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432** - \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 `.glt` \u0444\u0430\u0439\u043b\u044b \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0441 \u043a\u043e\u0434\u043e\u043c, Docker \u0438 CI \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434.\n\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/psf/black)\n\n## \u2728 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\n\n- \ud83d\udd27 **\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432** - \u0438\u0437 `.glt` \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\n- \ud83d\udd0c **\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432** - \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\n- \ud83d\udcda **\u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438** - CLI, API, \u043f\u0440\u043e\u0435\u043a\u0442\n- \ud83d\udd04 **\u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b** - \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438\n- \ud83d\udd12 **\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c** - SOPS \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n- \ud83c\udf10 **IPFS \u043a\u044d\u0448** - \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432\n- \ud83d\udc33 **Docker \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430** - \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b\n- \ud83d\ude80 **CI/CD** - GitHub Actions\n\n## \ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n### \u0418\u0437 PyPI (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)\n```bash\npip install glt-cli\n```\n\n### \u0418\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430\n```bash\n# \u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\ngit clone https://github.com/Quantum-Insight-Lab/glt-cli.git\ncd glt-cli\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\npip install -e .\n\n# \u0418\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\npip install -r requirements.txt\npython -m glt_cli.main --help\n```\n\n### \u0418\u0437 \u0444\u0430\u0439\u043b\u0430 requirements.txt\n```bash\n# \u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 requirements.txt \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435\npip install -r requirements.txt\npython -m glt_cli.main --help\n```\n\n## \ud83d\udccb \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\n\n- Python 3.12+\n- Git\n- Docker (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Docker \u043e\u0431\u0440\u0430\u0437\u043e\u0432)\n\n## \ud83d\udd27 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\n\n### \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n\n```bash\n# \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430\nglt compile my-project --output dist/\n\n# \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\nglt validate my-project\n\n# \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435\nglt info my-project\n\n# \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0435\u043c\nglt cache stats\nglt cache clear\n\n# \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e\nglt security check\nglt security encrypt secrets.yaml\n\n# \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438\nglt plugins list\nglt plugins info\n\n# \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 CLI\nglt update\n\n# \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b\nglt release analyze\nglt release create\n\n# \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\nglt docs generate\n```\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 GLT \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n\n\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `.glt` \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:\n\n```yaml\nversion: 0.6\nmeta:\n name: my-awesome-project\n wave: \u03a6-21\n owner: @developer\n visibility: private\n\nrepo:\n url: https://github.com/username/my-awesome-project.git\n branch_protect: true\n gpg_sign: true\n semantic_release: true\n\nstack:\n runtime: python:3.12-slim\n deps:\n - fastapi>=0.100\n - uvicorn>=0.20\n dev_deps:\n - pytest\n - black\n - ruff\n\ninfra:\n cache_ipfs: /dns4/mesh.glt/ipfs/\n observability: prom+grafana\n\nsecurity:\n sops:\n kms: aws-kms://arn:aws:kms:us-west-2:123456789:key/abc-def\n enforce_in_ci: true\n pre_commit:\n - detect-secrets\n - ruff\n - mypy\n```\n\n\u0417\u0430\u0442\u0435\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439\u0442\u0435:\n\n```bash\nglt compile . --output dist/\n```\n\n## \ud83c\udfd7\ufe0f \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\n\nGLT CLI \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u043e\u043b\u043d:\n\n### \ud83c\udf0a \u0412\u043e\u043b\u043d\u0430 \u03a6-13 - \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\n- Typer CLI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n- \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f GLT \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\n- Jinja2 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432\n- \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b\n\n### \ud83c\udf0a \u0412\u043e\u043b\u043d\u0430 \u03a6-21 - \u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\n- \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f Docker \u043e\u0431\u0440\u0430\u0437\u043e\u0432\n- CI/CD workflows\n- SOPS \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n- IPFS \u043a\u044d\u0448 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432\n- Direnv \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\n\n### \ud83c\udf0a \u0412\u043e\u043b\u043d\u0430 \u03a6-34 - \u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f\n- \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\n- \u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 CLI\n- \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b\n- \u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\n- E2E \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n\n## \ud83d\udd0c \u041f\u043b\u0430\u0433\u0438\u043d\u044b\n\nGLT CLI \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432:\n\n### \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b\n- **TelemetryPlugin** - \u0441\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a\n- **ValidationPlugin** - \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f\n- **OptimizationPlugin** - \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\n\n### \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430\n\n```python\nfrom glt_cli.plugins import BasePlugin\nfrom typing import Dict, Any\n\nclass MyPlugin(BasePlugin):\n def get_name(self) -> str:\n return \"my_plugin\"\n \n def get_version(self) -> str:\n return \"1.0.0\"\n \n def on_pre_compile(self, context: Dict[str, Any]) -> None:\n print(\"\u041c\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439\")\n \n def on_post_compile(self, context: Dict[str, Any]) -> None:\n print(\"\u041c\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\")\n```\n\n\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0432 `plugins/my_plugin.py` \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435:\n\n```bash\nglt plugins load\n```\n\n## \ud83d\udd04 \u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\n\nGLT CLI \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:\n\n```bash\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439\nglt update\n\n# \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438\nglt update 1.0.0\n```\n\n## \ud83d\udcdd \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b\n\n\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432:\n\n```bash\n# \u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432\nglt release analyze\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u0430\nglt release create\n\n# \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437\nglt release create --dry-run\n```\n\n## \ud83d\udcda \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\n\n\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:\n\n```bash\n# \u0412\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\nglt docs generate\n\n# \u0422\u043e\u043b\u044c\u043a\u043e CLI \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\nglt docs cli\n\n# \u0422\u043e\u043b\u044c\u043a\u043e API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\nglt docs api\n```\n\n## \ud83e\uddea \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\n\n```bash\ngit clone https://github.com/Quantum-Insight-Lab/glt-cli.git\ncd glt-cli\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\npython -m venv venv\nsource venv/bin/activate # Linux/macOS\n# \u0438\u043b\u0438\nvenv\\Scripts\\activate # Windows\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439\npip install -r requirements-dev.txt\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\npip install -e .\n```\n\n### \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\n\n```bash\n# \u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b\npytest\n\n# \u0421 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c\npytest --cov=glt_cli\n\n# \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b\npytest tests/test_core.py\n```\n\n### \u041b\u0438\u043d\u0442\u0438\u043d\u0433 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n\n```bash\n# \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430\nblack glt_cli/\n\n# \u041b\u0438\u043d\u0442\u0438\u043d\u0433\nruff check glt_cli/\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432\nmypy glt_cli/\n```\n\n### \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\n\n```bash\n# \u0421\u0431\u043e\u0440\u043a\u0430\npython -m build\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430\ntwine check dist/*\n\n# \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 PyPI (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432)\ntwine upload dist/*\n```\n\n## \ud83d\udce6 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u0441 GLT CLI, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:\n\n### 1. \u0418\u0437 requirements.txt\n```bash\npip install -r requirements.txt\npython -m glt_cli.main --help\n```\n\n### 2. \u0418\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430\n```bash\n# \u0420\u0430\u0441\u043f\u0430\u043a\u0443\u0439\u0442\u0435 \u0430\u0440\u0445\u0438\u0432 \u0438\u043b\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\ncd glt-cli\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\npip install -r requirements.txt\n\n# \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 CLI\npython -m glt_cli.main --help\n```\n\n### 3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430\n```bash\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 pyinstaller\npip install pyinstaller\n\n# \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b\npyinstaller --onefile --name glt glt_cli/main.py\n\n# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\n./dist/glt --help\n```\n\n## \ud83e\udd1d \u0412\u043a\u043b\u0430\u0434 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\n\n1. \u0424\u043e\u0440\u043a\u043d\u0438\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\n2. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\n3. \u0412\u043d\u0435\u0441\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n4. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u0435\u0441\u0442\u044b\n5. \u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 pull request\n\n## \ud83d\udcc4 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\n\nMIT License - \u0441\u043c. \u0444\u0430\u0439\u043b [LICENSE](LICENSE) \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\n\n## \ud83c\udd98 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\n\n- \ud83d\udcd6 [\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f](https://github.com/Quantum-Insight-Lab/glt-cli#readme)\n- \ud83d\udc1b [Issues](https://github.com/Quantum-Insight-Lab/glt-cli/issues)\n- \ud83d\udcac [Discussions](https://github.com/Quantum-Insight-Lab/glt-cli/discussions)\n\n## \ud83c\udfe2 \u041e \u043f\u0440\u043e\u0435\u043a\u0442\u0435\n\nGLT CLI \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 **Quantum Insight Lab** \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\n\n---\n\n**GLT CLI - \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0449\u0435!** \ud83d\ude80 \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 GLT-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432",
"version": "0.6.0",
"project_urls": {
"Bug Tracker": "https://github.com/Quantum-Insight-Lab/glt-cli/issues",
"Changelog": "https://github.com/Quantum-Insight-Lab/glt-cli/blob/main/CHANGELOG.md",
"Documentation": "https://glt-cli.readthedocs.io/",
"Homepage": "https://github.com/Quantum-Insight-Lab/glt-cli",
"Repository": "https://github.com/Quantum-Insight-Lab/glt-cli.git"
},
"split_keywords": [
"glt",
" cli",
" compiler",
" templates",
" docker",
" ci-cd"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c5637c2610e91d197553800bbd9e4786aaa14492181e0b0e9974c6e81273fce9",
"md5": "8066d71c59d2e44ce2a221f4ce25884f",
"sha256": "d8d0daf7f85e44dafb42b965637294482ea66e644a6c902b2a3db3d0b4762f1b"
},
"downloads": -1,
"filename": "glt_compiler_tool-0.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8066d71c59d2e44ce2a221f4ce25884f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 46029,
"upload_time": "2025-07-22T12:28:55",
"upload_time_iso_8601": "2025-07-22T12:28:55.298990Z",
"url": "https://files.pythonhosted.org/packages/c5/63/7c2610e91d197553800bbd9e4786aaa14492181e0b0e9974c6e81273fce9/glt_compiler_tool-0.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d65d516783abe7e0a86664785f89e780773cd00fcb8d4b8ae6814372d561199d",
"md5": "f1f98421a12668d1e43cdef470b9036f",
"sha256": "301a89e0e8175f73d90d8f00e8094782f02a482e79ac7ed6c10df3f36de50389"
},
"downloads": -1,
"filename": "glt_compiler_tool-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "f1f98421a12668d1e43cdef470b9036f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 43227,
"upload_time": "2025-07-22T12:28:57",
"upload_time_iso_8601": "2025-07-22T12:28:57.397866Z",
"url": "https://files.pythonhosted.org/packages/d6/5d/516783abe7e0a86664785f89e780773cd00fcb8d4b8ae6814372d561199d/glt_compiler_tool-0.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-22 12:28:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Quantum-Insight-Lab",
"github_project": "glt-cli",
"github_not_found": true,
"lcname": "glt-compiler-tool"
}