import os from pathlib import Path from fastapi import FastAPI, HTTPException, Request from fastapi.responses import HTMLResponse # Umgebungsvariablen mit Fallback GITEE_URL = os.getenv("GITEE_URL", "https://git.carabella.ch/") ACCESS_TOKEN = os.getenv("ACCESS_TOKEN", "") # Leerlassen falls nicht gesetzt COMMIT_NAME = os.getenv("COMMIT_NAME", "KI-Sparringpartner") # Projekt-Ordner (gemountet im Docker) PROJECTS_DIR = Path("/projects") def get_token(): """Gibt Token zurΓΌck β aus .env oder leer.""" return ACCESS_TOKEN or "" app = FastAPI(title="Gitea Sync AI", version="1.0") # π― WICHTIG: Routen einbinden! from . import routes app.include_router(routes.router, prefix="/api") # Frontend ausliefern - verwende relativen Pfad TEMPLATES_DIR = Path(__file__).parent / "templates" @app.get("/", response_class=HTMLResponse) async def dashboard(request: Request): with open(TEMPLATES_DIR / "index.html") as f: return f.read() @app.get("/projects/{project_name}") # β Fuer direkten Zugriff auf Projekte! def project_view(project_name: str, request: Request): """Gibt ein einfaches Verzeichnis-Display zurueck.""" from fastapi.responses import HTMLResponse target_dir = PROJECTS_DIR / project_name if not target_dir.exists(): return {"error": "Projekt nicht gefunden", "available_projects": [p.name for p in PROJECTS_DIR.iterdir() if p.is_dir()]} # Einfache HTML-Ansicht: html = f"""
β Git Repository
' for item in sorted(target_dir.iterdir()): icon = "π" if item.is_dir() else "π" link = f"/projects/{item.name}" if item.is_dir() else "#" html += f'' return HTMLResponse(html)