Skip to main content

Universal core library for Forgejo repository synchronization.

Project description

forgejo-sync-manager-core v1.0.0

Universal core library for Forgejo repository synchronization.


GitHub top language GitHub license GitHub release GitHub stars GitHub forks


⚠️ 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.0.tar.gz (8.9 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.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for forgejo_sync_manager_core-1.0.0.tar.gz
Algorithm Hash digest
SHA256 15bee5c59cdbb761205f2bcd8c9a690ede2dc04c7514284eecbfedb97477a267
MD5 b814211585806691289256d1afad0d33
BLAKE2b-256 f32f9ec5f88392792b5980a18eab682b62f91840bec4aff9efa46d46752865fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for forgejo_sync_manager_core-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b111533990ac7e607fea492efab098c8378e653b963065922fe57a8e710a7306
MD5 3f86feeb1540af1924baad5aeec25b29
BLAKE2b-256 93b411eebe900ae78056377463a034ead6fc86ccd0a1e208c35e0794646ea057

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