Metadata-Version: 2.5
Name: MGost
Version: 1.0.0
Summary: MGost converter console app based on ArtichaAPI
Project-URL: homepage, https://articha.ru/mgost/
Project-URL: repository, https://github.com/ArtichaTM/MGost
Author-email: Геворкян Артём <tima-1324@mail.ru>
License-Expression: MIT
License-File: LICENSE
Keywords: ArtichaSite,api
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Information Technology
Classifier: Natural Language :: English
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <3.14,>=3.13
Requires-Dist: aiofiles>=25.1.0
Requires-Dist: aiopath>=0.7.7
Requires-Dist: click>=8.3.1
Requires-Dist: dotenv>=0.9.9
Requires-Dist: httpx>=0.28.1
Requires-Dist: pydantic>=2.11.7
Requires-Dist: typer>=0.16.1
Description-Content-Type: text/markdown

# MGost
Библиотека позволяет пользоваться преимуществами MGost конвертера локально

## Установка

Для начала необходимо получить API токен на [официальном сайте конвертера](https://articha.ru/auth/tokens/)

После создания ключа можно запустить библиотеку напрямую через [uv](https://docs.astral.sh/uv/) (**Рекомендуется**):
```bash
uvx -p 3.13 mgost version
```

Или через pip:
```bash
python3.13 -m pip install mgost
python3.13 -m mgost version
```

## Запуск
Для инициализации папки для проекта используйте `mgost init`. Первый запуск запросит API токен:
```console
$ uvx -p 3.13 mgost init
API ключ не найден ни в переменных среды, ни в .env.
Введите код вручную или внесите его в вышеперечисленные источники
ARTICHAAPI_TOKEN=
```

После ввода токена, нужно выбрать проект:
```console
ARTICHAAPI_TOKEN= ...
Текущий проект недействительный в облаке. Воспользуйтесь mgost init для инициализации проекта
Создать новый проект или синхронизировать существующий?
0. Создать новый проект
1. "Проект1"
2. "Проект2"
Действие: 
```

В зависимости от выбора, могут быть другие вопросы инициализации

## Синхронизация
После инициализации проект можно синхронизировать и выполнять рендер. Команда `mgost render` синхронизирует проект с облаком и выполнит рендер.

```console
$ mgost render
Текущий проект: Проект1
Синхронизация ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3
Начинаю рендер
Рендер успешно завершён
↓ output.docx ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
```

В случае проблем с выполнением рендера, лог будет отображаться в консоли:
```console
$ mgost render
Текущий проект: Проект1
Синхронизация ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3
Начинаю рендер
Рендер успешно завершён
    ИНФО: grafana-logo-3.png не существует. Изображение (рисунок) пропущен
↓ output.docx ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
```

## Структура проекта
```
src/mgost/
├── __main__.py               # Точка входа для `python -m mgost`
├── console.py                # Обёртка над typer/click для консольного вывода (прогресс, цвета, промпты)
├── api/
│   ├── api.py                # Класс ArtichaAPI — HTTP-клиент для работы с облаком (проекты, файлы, токены)
│   ├── actions.py            # Датаклассы действий синхронизации (загрузка/скачивание/перемещение файлов)
│   ├── caller.py             # Низкоуровневая функция выполнения HTTP-запроса с повторами
│   ├── exceptions.py         # Исключения API (WrongToken, ClientClosed, APIRequestError)
│   ├── remote_version.py     # Получение актуальной версии пакета с PyPI
│   ├── request.py            # Датакласс APIRequestInfo — описание одного запроса
│   └── schemas/
│       ├── general.py        # Общие Pydantic-схемы (TokenInfo)
│       └── mgost.py          # Pydantic-схемы предметной области (Project, ProjectFile, BuildResult и т.д.)
├── cli/
│   ├── app.py                # Создание typer.Typer приложения и обёртка main() с перехватом Ctrl+C
│   ├── callback.py           # Глобальный callback CLI (флаг -v, инициализация логирования)
│   ├── commands.py           # Определения команд CLI (version, token, init, sync, render)
│   └── async_commands.py     # Асинхронные реализации команд CLI
├── mgost/
│   ├── mgost.py              # Класс MGost — основной фасад: инициализация, синхронизация, рендер проекта
│   ├── sync.py               # Логика синхронизации файлов проекта с облаком
│   ├── progress_utils.py     # Кастомные колонки rich.progress (например, отображение байт/штук)
│   └── utils.py              # Вспомогательные функции (валидация токена и проекта)
└── settings/
    ├── settings.py           # Класс Settings — чтение токена/конфига из env, .env, команды
    └── logging.py            # Настройка логирования
tests/                        # Тесты (pytest), структура повторяет src/mgost
```
