Files
Simon Diesenreiter e824475872
Some checks failed
Upload Python Package / Create Release (push) Successful in 37s
Upload Python Package / deploy (push) Failing after 38s
feat: initial release, refs NOISSUE
2026-04-02 01:43:16 +02:00

76 lines
2.2 KiB
Python

"""Git manager for project operations."""
import os
import subprocess
from typing import Optional
class GitManager:
"""Manages git operations for the project."""
def __init__(self, project_id: str):
if not project_id:
raise ValueError("project_id cannot be empty or None")
self.project_id = project_id
self.project_dir = f"{os.path.dirname(__file__)}/../../test-project/{project_id}"
def init_repo(self):
"""Initialize git repository."""
os.makedirs(self.project_dir, exist_ok=True)
os.chdir(self.project_dir)
subprocess.run(["git", "init"], check=True, capture_output=True)
def add_files(self, paths: list[str]):
"""Add files to git staging."""
subprocess.run(["git", "add"] + paths, check=True, capture_output=True)
def commit(self, message: str):
"""Create a git commit."""
subprocess.run(
["git", "commit", "-m", message],
check=True,
capture_output=True
)
def push(self, remote: str = "origin", branch: str = "main"):
"""Push changes to remote."""
subprocess.run(
["git", "push", "-u", remote, branch],
check=True,
capture_output=True
)
def create_branch(self, branch_name: str):
"""Create and switch to a new branch."""
subprocess.run(
["git", "checkout", "-b", branch_name],
check=True,
capture_output=True
)
def create_pr(
self,
title: str,
body: str,
base: str = "main",
head: Optional[str] = None
) -> dict:
"""Create a pull request via gitea API."""
# This would integrate with gitea API
# For now, return placeholder
return {
"title": title,
"body": body,
"base": base,
"head": head or f"ai-gen-{self.project_id}"
}
def get_status(self) -> str:
"""Get git status."""
result = subprocess.run(
["git", "status", "--porcelain"],
capture_output=True,
text=True
)
return result.stdout.strip()