CLI инструмент для управления репозиториями РИТМ (Gramax)
Project description
gramax-sync
CLI инструмент для синхронизации и управления множеством Git-репозиториев проекта РИТМ (Gramax).
Описание
gramax-sync — консольный инструмент для работы с множеством Git-репозиториев, определённых в конфигурационном файле workspace.yaml. Инструмент позволяет выполнять массовые операции clone, pull, commit, push для всех репозиториев проекта.
Требования
- Python: 3.10 или выше
- Git: установленный и настроенный
- macOS/Linux/Windows: поддерживаются все платформы
Проверка требований
# Проверка версии Python
python3 --version # Должно быть 3.10+
# Проверка Git
git --version
Установка
Вариант 1: Установка через uv (рекомендуется)
uv — современный, быстрый менеджер пакетов Python.
Шаг 1: Установка uv
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Или через Homebrew (macOS)
brew install uv
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
После установки перезапустите терминал или выполните:
source ~/.bashrc # или ~/.zshrc для zsh
Шаг 2: Клонирование и установка проекта
# Клонировать репозиторий
git clone https://github.com/your-org/gramax-sync.git
cd gramax-sync
# Создать виртуальное окружение и установить зависимости
uv venv
source .venv/bin/activate # macOS/Linux
# или .venv\Scripts\activate # Windows
# Установить проект
uv pip install -e .
Шаг 3: Проверка установки
# Проверить, что команда доступна
gramax-sync --version
# Проверить справку
gramax-sync --help
Вариант 2: Установка через pip
# Клонировать репозиторий
git clone https://github.com/your-org/gramax-sync.git
cd gramax-sync
# Создать виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# или .venv\Scripts\activate # Windows
# Установить проект
pip install -e .
Вариант 3: Установка для разработки
# Автоматическая настройка (рекомендуется)
make setup
source .venv/bin/activate
# Или вручную через uv:
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
pre-commit install
# Или вручную через pip:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -e ".[dev]"
pre-commit install
Подробнее см. DEVELOPMENT.md
Проверка установки
После установки выполните следующие команды для проверки:
# 1. Проверка версии
gramax-sync --version
# Ожидаемый вывод: gramax-sync, version 0.1.0
# 2. Проверка справки
gramax-sync --help
# Должен отобразиться список команд
# 3. Проверка доступности всех команд
gramax-sync auth --help
gramax-sync clone --help
gramax-sync status --help
Устранение проблем установки
Команда не найдена после установки
# Убедитесь, что виртуальное окружение активировано
source .venv/bin/activate
# Проверьте, что пакет установлен
pip list | grep gramax-sync
# Переустановите если нужно
pip install -e .
Ошибка "Python version not supported"
# Проверьте версию Python
python3 --version
# Если версия < 3.10, установите новую версию:
# macOS
brew install python@3.11
# Ubuntu/Debian
sudo apt install python3.11
Проблемы с keyring на Linux
# Установите необходимые библиотеки
sudo apt install libsecret-1-dev # Ubuntu/Debian
sudo dnf install libsecret-devel # Fedora
Использование
Первоначальная настройка
Перед использованием необходимо выполнить первоначальную настройку:
# Интерактивная настройка
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 clone
# Статус всех репозиториев
gramax-sync status
# Обновление всех репозиториев
gramax-sync pull
# Коммит изменений (с автогенерацией сообщения)
gramax-sync commit
# Коммит с кастомным сообщением
gramax-sync commit -m "Update documentation"
# Отправка изменений
gramax-sync push
# Полная синхронизация (pull + commit + push)
gramax-sync sync
# Синхронизация с предварительным просмотром
gramax-sync sync --dry-run
Фильтрация по секциям и каталогам
Все команды поддерживают glob-паттерны для фильтрации:
# Работа только с секциями, начинающимися на "1-"
gramax-sync status --section "1-*"
gramax-sync clone --section "1-методология"
# Работа только с определёнными каталогами
gramax-sync commit --catalog "ritm-*" -m "Fix typos"
# Комбинация фильтров
gramax-sync pull --section "1-*" --catalog "ritm-methodology"
Управление конфигурацией
# Просмотр текущей конфигурации
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
Аутентификация
📖 Подробная информация о правах токена: 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 и создаётся автоматически при выполнении команды 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 — Принципы архитектуры
- ROADMAP.md — Дорожная карта развития
- OAUTH_SETUP.md — Настройка OAuth
- MCP_SETUP.md — MCP Server для Claude Desktop
- TOKEN_PERMISSIONS.md — Права токенов GitLab
- CLAUDE.md — Контекст для Claude Code
MCP Server для Claude Desktop
gramax-sync включает MCP Server для интеграции с Claude Desktop.
Доступные инструменты:
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.1.tar.gz.
File metadata
- Download URL: gramax_sync-0.1.1.tar.gz
- Upload date:
- Size: 52.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71892c55efa11d2b9a55006c3a75ff75d73c5309b2a960f6d4720cefb81aff04
|
|
| MD5 |
074794d0549481c48616a4e53e113627
|
|
| BLAKE2b-256 |
9e498ddb5cda99bc52322dcd132cd0fb1f89cdd6d9a4b03f1ae9f66518c9960b
|
File details
Details for the file gramax_sync-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gramax_sync-0.1.1-py3-none-any.whl
- Upload date:
- Size: 64.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c22ae6d40a9cc1a4ede9e0eb8cf657a0ee5774230b013e66fa472d8cf053b0c
|
|
| MD5 |
d0d8bd55efe23fd6f6c93e16c650f667
|
|
| BLAKE2b-256 |
2099930612383418762d8ebb80ec50ed1c048368ee9f81b91442d0f9021bf11c
|