Skip to main content

Universal core library for Forgejo repository synchronization.

Project description

forgejo-sync-manager-core v1.0.1

Universal core library for Forgejo repository synchronization.


GitHub top language GitHub license GitHub release GitHub stars GitHub forks

PyPI - Downloads PyPI PyPI - Format PyPI Downloads PyPI Downloads PyPI Downloads


⚠️ Disclaimer

By using this software, you agree to the full disclaimer terms.

Summary: Software provided "AS IS" without warranty. You assume all risks.

Full legal disclaimer: See DISCLAIMER.md


Overview

forgejo-sync-manager-core is a reusable Python library that provides the core functionality for synchronizing Forgejo repositories. It is designed to be used by both CLI and GUI applications, ensuring code reuse and consistency across different interfaces.

Features

  • Forgejo API client with token-based authentication
  • Repository discovery with pagination support
  • Git repository cloning and updating
  • Repository recloning functionality
  • Local repository existence checking
  • Path management for local storage
  • Cross-platform support (Linux, Windows, macOS)
  • Abstract base classes for easy extension

Implementations

This core library is used in the following projects:

Project Description Repository
forgejo-sync-manager-cli CLI tool for batch synchronization GitHub
forgejo-sync-manager-gui Desktop GUI tool for batch synchronization GitHub

Components

Core Classes

Class Description
ForgejoAuth Authentication container for server URL and token
ForgejoAPIClient API client for Forgejo REST API
ConfigManager Configuration file management (JSON)
BaseSyncManager Abstract base class for sync operations

Sync Managers

Class Purpose
GUISyncManager Lightweight manager for GUI applications (no console output)
CLISyncManager Full-featured manager with console progress output

Requirements

  • Python 3.8+
  • Git
  • Forgejo server with API access
  • requests library

Installation

git clone https://github.com/smartlegionlab/forgejo-sync-manager-core.git
cd forgejo-sync-manager-core
python -m venv venv
pip install -r requirements.txt

Usage

Basic Authentication

from core.auth import ForgejoAuth

auth = ForgejoAuth(
    token="your_token",
    server_url="http://localhost:3000",
    username="your_username"
)

API Client

from core.api_client import ForgejoAPIClient

client = ForgejoAPIClient(auth)
user_info = client.get_user_info()
repositories = client.get_user_repos()

Sync Manager for GUI Applications

from core.sync_manager_gui import GUISyncManager

sync_manager = GUISyncManager(auth)
sync_manager.ensure_directories()

for repo in repositories:
    status = sync_manager.sync_repository(repo)
    # status: "CLONED", "UPDATED", "FAILED"

Sync Manager for CLI Applications

from core.sync_manager_cli import CLISyncManager

sync_manager = CLISyncManager(auth)
results = sync_manager.sync_all_repositories(repositories)
# results: {"cloned": 0, "updated": 0, "failed": 0}

Check Repository Updates (CLI only)

from core.sync_manager_cli import CLISyncManager

sync_manager = CLISyncManager(auth)
needs_update = sync_manager.check_updates(repositories)
print(f"Repositories needing update: {len(needs_update)}")

Local Repository Management

# Check if repository exists locally
exists = sync_manager.repo_exists_locally("repo-name")

# Get path to local repository
repo_path = sync_manager.get_repo_path("repo-name")

Configuration

Configuration is stored in ~/forgejo-sync-manager/config.json:

{
    "token": "your_access_token",
    "server_url": "http://localhost:3000",
    "username": "your_username"
}

Return Status Codes

Status Description
CLONED Repository was successfully cloned
UPDATED Existing repository was successfully updated
RECLONED Repository was deleted and re-cloned
FAILED Operation failed

How It Works

  1. Authentication: Token-based authentication via Forgejo API
  2. Repository Discovery: Fetches complete repository list with pagination (50 per page)
  3. Update Detection (CLI only): For each existing repository, executes git fetch and compares HEAD with FETCH_HEAD
  4. Sync Operations: Uses authenticated URLs with embedded token for Git operations
  5. Directory Structure: ~/forgejo-sync-manager/{username}/repositories/

License

BSD 3-Clause License

Copyright (©) 2026, Alexander Suvorov All rights reserved.

Related Projects

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

forgejo_sync_manager_core-1.0.1.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

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

forgejo_sync_manager_core-1.0.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file forgejo_sync_manager_core-1.0.1.tar.gz.

File metadata

File hashes

Hashes for forgejo_sync_manager_core-1.0.1.tar.gz
Algorithm Hash digest
SHA256 cbf2dab09721ccd8a24020706e3db280f6c56fbbf6a0687ff20f2200fdf47942
MD5 6e2edc70ef2bd6e0798236f7594165f2
BLAKE2b-256 f5c63a669c820b5625fb266680d48d5b7443f037aaeb0fa489951775c2acbb2a

See more details on using hashes here.

File details

Details for the file forgejo_sync_manager_core-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for forgejo_sync_manager_core-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 be623bfacb3fb1276ea2262c9c80a764e316097ba8a2c8468f7e9a3a272c874c
MD5 a4200c720c93daea8ec0c7c7a5d76337
BLAKE2b-256 db54526bac04f959eacefd3c93fd91f38a31aa14f98c7f09802f247ac1d2c583

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