CLI инструмент для управления репозиториями РИТМ (Gramax)
Project description
gramax-sync
CLI инструмент для синхронизации и управления множеством Git-репозиториев проекта РИТМ (Gramax).
Описание
gramax-sync — консольный инструмент для работы с множеством Git-репозиториев, определённых в конфигурационном файле workspace.yaml. Инструмент позволяет выполнять массовые операции clone, pull, commit, push для всех репозиториев проекта.
Установка
Для использования
# Создать виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# или .venv\Scripts\activate # Windows
# Установить проект
pip install -e .
Для разработки
# Автоматическая настройка (рекомендуется)
make setup
# Или вручную:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -e ".[dev]"
pre-commit install
Подробнее см. DEVELOPMENT.md
Использование
Первоначальная настройка
Перед использованием необходимо выполнить первоначальную настройку:
# Интерактивная настройка
gramax-sync init
# Или с параметрами
gramax-sync init \
--repo-url https://itsmf.gitlab.yandexcloud.net/ritm-authors/gramax-yaml-manager \
--branch master \
--catalog-branch private
Команда init выполняет:
- Подключение к репозиторию с конфигурациями
- Проверку доступа и наличия
workspace.yaml - Авторизацию в GitLab при необходимости
- Загрузку и отображение структуры секций и каталогов
- Интерактивный выбор секций/каталогов для работы
Важно: Для репозитория конфигураций используется ветка master (по умолчанию), а для каталогов (репозиториев с кодом) — ветка private.
Управление конфигурацией
# Просмотр текущей конфигурации
gramax-sync edit show
# Изменение директории для репозиториев
gramax-sync edit set-workspace-dir --workspace-dir ~/my-workspace
# или интерактивно
gramax-sync edit set-workspace-dir
# Добавление секции или каталога
gramax-sync edit add --section "1-методология" --catalog "ritm-methodology"
# или интерактивно
gramax-sync edit add
# Удаление секции или каталога
gramax-sync edit remove --section "1-методология" --catalog "ritm-methodology"
# Обновление конфигурации с сервера
gramax-sync update
Работа с репозиториями
# Клонирование всех репозиториев
gramax-sync clone
# Статус всех репозиториев
gramax-sync status
# Обновление всех репозиториев
gramax-sync pull
# Коммит изменений (с автогенерацией сообщения)
gramax-sync commit
# Коммит с кастомным сообщением
gramax-sync commit -m "Update documentation"
# Коммит с фильтрацией
gramax-sync commit --section "1-*" -m "Fix typos"
Аутентификация
📖 Подробная информация о правах токена: TOKEN_PERMISSIONS.md
OAuth (рекомендуется)
⚠️ Перед использованием OAuth необходимо создать OAuth Application в GitLab!
-
Создайте OAuth Application:
- Откройте: https://itsmf.gitlab.yandexcloud.net/-/profile/applications
- Нажмите "Add new application"
- Name:
gramax-sync - Redirect URI:
http://localhost:8765/callback - Scopes:
read_api,read_repository,read_user - Скопируйте Application ID
-
Установите Application ID:
export GRAMAX_OAUTH_APPLICATION_ID="ваш_application_id"
Или используйте автоматическую настройку:
./scripts/setup_oauth.sh -
Выполните аутентификацию:
gramax-sync auth login --oauth --url https://itsmf.gitlab.yandexcloud.net
Подробная инструкция: OAUTH_SETUP.md
Personal Access Token (альтернатива)
Необходимые права токена:
read_api- чтение данных через APIread_repository- чтение содержимого репозиториевread_user- получение информации о пользователе
# Войти через Personal Access Token
gramax-sync auth login --pat --url https://itsmf.gitlab.yandexcloud.net
💡 Подробнее: См. TOKEN_PERMISSIONS.md для полной информации о настройке прав токена.
Управление аутентификацией
# Показать статус аутентификации
gramax-sync auth status
# Обновить токен
gramax-sync auth refresh
# Выйти из системы
gramax-sync auth logout --url https://itsmf.gitlab.yandexcloud.net
Конфигурация
Конфигурация хранится в ~/.config/gramax-sync/config.yaml (ранее использовался JSON формат, автоматически мигрируется) и создаётся автоматически при выполнении команды init.
Репозиторий с конфигурациями должен содержать файл workspace.yaml:
workspace_dir: ~/ritm-workspace
sections:
- name: "1-методология"
catalogs:
- name: "ritm-methodology"
source:
url: "https://gitlab.example.com"
Ветки:
- Репозиторий конфигураций: ветка
master(по умолчанию) - Каталоги (репозитории с кодом): ветка
private(по умолчанию)
Директория для репозиториев:
- По умолчанию:
~/{name}-workspace(гдеname— имя проекта из workspace.yaml) - Можно изменить:
gramax-sync edit set-workspace-dir - Структура:
{workspace_dir}/{section}/{catalog}/
Разработка
Быстрый старт
# Настроить окружение
make setup
source .venv/bin/activate
# Запустить тесты
make test
# Проверить код
make check
# Отформатировать код
make format
Полезные команды
make help # Показать все команды
make test # Запустить тесты
make test-cov # Тесты с покрытием
make lint # Проверить линтерами
make format # Отформатировать код
make type-check # Проверить типы
make check # Проверить всё
make clean # Очистить временные файлы
Документация для разработчиков:
- DEVELOPMENT.md — Руководство по разработке
- ARCHITECTURE_PRINCIPLES.md — Универсальные правила архитектуры и принципы разработки
Статус разработки
✅ Проект готов к использованию! — Все основные команды реализованы и протестированы
Последние обновления (v0.1.0)
- ✅ Адаптация модели данных под реальную структуру workspace.yaml (словарь sections, поддержка null значений)
- ✅ Автоматическая аутентификация при клонировании репозиториев (токен добавляется в URL)
- ✅ Исправление пагинации при получении дерева репозиториев (получение всех элементов)
- ✅ Команда изменения workspace_dir:
gramax-sync edit set-workspace-dir - ✅ Улучшенная обработка ошибок GitLab API (fallback на прямые HTTP запросы)
- ✅ Правильная передача URL в python-gitlab (базовый URL + путь проекта)
- ✅ Обновление токена в GitLabClient после сохранения
Этап 1.1: Настройка проекта и инфраструктуры ✅ ЗАВЕРШЁН
Этап 1.1: Настройка проекта и инфраструктуры ✅ ЗАВЕРШЁН
- Структура проекта и модули
- Конфигурация проекта (pyproject.toml)
- Виртуальное окружение и зависимости
- Инструменты разработки (black, ruff, mypy)
- Pre-commit hooks
- Тесты инфраструктуры (16 тестов, 100% покрытие)
- Документация по разработке
Этап 1.2: Customer Map и первоначальная настройка ✅ ЗАВЕРШЁН
- Документ Customer Map с описанием пользовательского пути
- Модуль для работы с GitLab API (проверка доступа, получение файлов)
- Парсер workspace.yaml (из файла и из строки)
- Модуль аутентификации (управление токенами через keyring)
- Интерактивный выбор секций/каталогов
- Команда
initдля первоначальной настройки - Поддержка разных веток (main для конфигов, private для каталогов)
- Команда
editдля редактирования локальной конфигурации - Команда
updateдля обновления конфигурации с сервера - Управление локальной конфигурацией (LocalConfig, ConfigManager)
- Миграция конфигурации с JSON на YAML формат
Этап 1.3: Команды работы с репозиториями ✅ ЗАВЕРШЁН
- Команда
clone— клонирование репозиториев - Команда
status— статус репозиториев - Команда
pull— обновление репозиториев
Этап 2.1: Команда commit ✅ ЗАВЕРШЁН
- Команда
commit— массовый commit изменений - Автогенерация сообщений коммитов
- Поддержка кастомных сообщений через
-m - Фильтрация по
--sectionи--catalog
Этап 2.2: Команда push ✅ ЗАВЕРШЁН
- Команда
push— отправка изменений в remote - Поддержка force push с подтверждением
- Установка upstream для новых веток
- Фильтрация по
--sectionи--catalog
Этап 2.3: Команда sync ✅ ЗАВЕРШЁН
- Команда
sync— полная синхронизация (pull + commit + push) - Dry-run режим для предварительного просмотра
- Условная логика (операции только при необходимости)
- Фильтрация по
--sectionи--catalog
Этап 3.1: OAuth аутентификация ✅ ЗАВЕРШЁН
- OAuth аутентификация через браузер
- Команда
auth login(OAuth и PAT) - Команда
auth status— статус аутентификации - Команда
auth logout— выход из системы - Команда
auth refresh— обновление токена - Проверка валидности токенов
Этап 3.3: Расширенная конфигурация
- Расширение LocalConfig новыми полями
- Команда
configдля управления конфигурацией - Поддержка переменных окружения
Этап 4: MCP Server для Claude Desktop ✅ ЗАВЕРШЁН
- Базовая структура MCP сервера на базе fastmcp
- 7 MCP инструментов для работы с репозиториями
- Интеграция с существующим кодом
- Документация по настройке
Доступные MCP инструменты:
list_repositories— список секций и каталоговget_repository_status— статус репозиториевclone_repositories— клонированиеpull_repositories— обновлениеcommit_changes— коммит измененийpush_changes— отправка измененийsync_repositories— полная синхронизация
Подробнее см. MCP_SETUP.md
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gramax_sync-0.1.0.tar.gz.
File metadata
- Download URL: gramax_sync-0.1.0.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c72003e100f3b8f32f176321a4b3fdc132619e53b8e80da6f6bf9cdf2235dde9
|
|
| MD5 |
91513b1fd62a6e02d633cd5938210cd2
|
|
| BLAKE2b-256 |
08bbebebbd751aebc154ad48b9328ceb3d3e21c967dfaf6d9a8c35f875c2125c
|
File details
Details for the file gramax_sync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gramax_sync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad7d7d1891c8f83f63c42373851f122f6c92044b98c4c61f94c43395263d2e7b
|
|
| MD5 |
fe5ea0ad75305900ab8fcb9d4bd05706
|
|
| BLAKE2b-256 |
d83bd18895f67790549c9f4a12335666ddc50fe4b15a81e19c5ad6b13e2c29ef
|