glt-compiler-tool


Nameglt-compiler-tool JSON
Version 0.6.0 PyPI version JSON
download
home_pageNone
SummaryCLI-инструмент для компиляции GLT-проектов
upload_time2025-07-22 12:28:57
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseMIT
keywords glt cli compiler templates docker ci-cd
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🚀 GLT CLI

**CLI-инструмент для компиляции GLT-проектов** - превращает декларативные `.glt` файлы в готовые репозитории с кодом, Docker и CI за один проход.

[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](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[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](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"
}
        
Elapsed time: 0.46558s