Skip to main content

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 выполняет:

  1. Подключение к репозиторию с конфигурациями
  2. Проверку доступа и наличия workspace.yaml
  3. Авторизацию в GitLab при необходимости
  4. Загрузку и отображение структуры секций и каталогов
  5. Интерактивный выбор секций/каталогов для работы

Важно: Для репозитория конфигураций используется ветка 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!

  1. Создайте OAuth Application:

  2. Установите Application ID:

    export GRAMAX_OAUTH_APPLICATION_ID="ваш_application_id"
    

    Или используйте автоматическую настройку: ./scripts/setup_oauth.sh

  3. Выполните аутентификацию:

    gramax-sync auth login --oauth --url https://itsmf.gitlab.yandexcloud.net
    

Подробная инструкция: OAUTH_SETUP.md

Personal Access Token (альтернатива)

Необходимые права токена:

  • read_api - чтение данных через API
  • read_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         # Очистить временные файлы

Документация

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gramax_sync-0.1.1.tar.gz (52.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gramax_sync-0.1.1-py3-none-any.whl (64.3 kB view details)

Uploaded Python 3

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

Hashes for gramax_sync-0.1.1.tar.gz
Algorithm Hash digest
SHA256 71892c55efa11d2b9a55006c3a75ff75d73c5309b2a960f6d4720cefb81aff04
MD5 074794d0549481c48616a4e53e113627
BLAKE2b-256 9e498ddb5cda99bc52322dcd132cd0fb1f89cdd6d9a4b03f1ae9f66518c9960b

See more details on using hashes here.

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

Hashes for gramax_sync-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c22ae6d40a9cc1a4ede9e0eb8cf657a0ee5774230b013e66fa472d8cf053b0c
MD5 d0d8bd55efe23fd6f6c93e16c650f667
BLAKE2b-256 2099930612383418762d8ebb80ec50ed1c048368ee9f81b91442d0f9021bf11c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page