projects/pyrag3/repo_manager.py
2026-04-05 17:30:07 -07:00

53 lines
1.8 KiB
Python

import logging
from pathlib import Path
from pyrag3.gitea_api import GiteaAPI
# Hardcoded repository details as requested
REPO_URL = "https://f8e1300d871e905e27ce54c3455a3343104d9b04@git.client.guacamolebox.net/butterfly/ragdocs.git"
logger = logging.getLogger(__name__)
class RepoManager:
def __init__(self, repo_url=REPO_URL):
self.repo_url = repo_url
self.api = GiteaAPI()
def sync_repo(self):
"""Deprecated: We no longer clone or pull to save storage."""
logger.info("Syncing repository metadata via API (skipping clone/pull)...")
# In the new architecture, sync is handled by the RetrievalService
# listing files via API.
pass
def commit_and_push(self, file_paths, message="Added new documents"):
"""Upload new files directly to the remote repository via API."""
logger.info(f"Uploading {len(file_paths)} files to repository via API...")
uploaded_urls = []
for file_path in file_paths:
file_path = Path(file_path)
# Use relative path from the designated "web_pages" root or similar
# For simplicity, we'll use a standard remote folder
remote_path = f"web_results/{file_path.name}"
url = self.api.upload_file(file_path, remote_path, message=message)
if url:
uploaded_urls.append(url)
logger.debug(f"Uploaded {file_path} to {url}")
else:
logger.error(f"Failed to upload {file_path}")
return uploaded_urls
if __name__ == "__main__":
# Quick test
logging.basicConfig(level=logging.INFO)
manager = RepoManager()
manager.sync_repo()
if __name__ == "__main__":
# Quick test
logging.basicConfig(level=logging.INFO)
manager = RepoManager()
manager.sync_repo()