glt-compiler-tool 0.6.0
CLI-инструмент для компиляции GLT-проектов
License: MIT
Requires Python: >=3.11
Keywords: glt, cli, compiler, templates, docker, ci-cd

# 🚀 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 - декларативная разработка стала проще!** 🚀