# Gitea API – lokales CLI

Dient dazu, **Issues** auf deiner Gitea-Instanz zu lesen und anzulegen – mit den in **`.env`** gesetzten Variablen (nicht committen).

## Umgebungsvariablen (Root `.env`)

| Variable | Beispiel |
|----------|----------|
| `GITEA_BASE_URL` | `http://192.168.2.144:3000` |
| `GITEA_TOKEN` | Personal Access Token (nur Scope **repo** + **issue** nötig) |
| `GITEA_OWNER` | `Lars` |
| `GITEA_REPO` | `mitai-jinkendo` |

## Voraussetzung

Python 3.10+ (nur Standardbibliothek).

## MCP vs. CLI (wann was)

| Aufgabe | Empfehlung |
|--------|------------|
| Issues listen, ein Issue lesen, kurzer Kommentar, schließen/öffnen | **MCP** (`gitea_*` in Cursor), weniger Kontext im Chat |
| **Issue-Beschreibung oder Titel ändern** (PATCH) | Kurz im Chat: **MCP** `gitea_patch_issue`. Groß / aus Datei / Automation: **CLI** `issues edit --body-file` |
| Neues Issue mit langem Markdown aus Vorlage | **CLI** `issues create --body-file` |
| Remote-Datei aus Gitea lesen (nicht im Workspace) | **MCP** `gitea_get_repo_file` oder CLI `repo file` |

Beides spricht dieselbe REST-API (`gitea_lib`); Token und `GITEA_*` wie oben.

## Aufruf (im Repo-Root)

```powershell
# Issues auflisten (offen)
python scripts/gitea/gitea_api.py issues list

# Issues mit State
python scripts/gitea/gitea_api.py issues list --state all

# Ein Issue lesen
python scripts/gitea/gitea_api.py issues get 42

# Issue anlegen (Titel + Body aus Datei oder direkt)
python scripts/gitea/gitea_api.py issues create --title "Fix: …" --body "…"

python scripts/gitea/gitea_api.py issues create --title "Fix: …" --body-file path/to/body.md

# Kommentar
python scripts/gitea/gitea_api.py issues comment 42 --body "…"
python scripts/gitea/gitea_api.py issues comment 42 --body-file path/to/comment.md

# Beschreibung und/oder Titel ändern (PATCH)
python scripts/gitea/gitea_api.py issues edit 42 --title "Neuer Titel"
python scripts/gitea/gitea_api.py issues edit 42 --body "Neuer **Markdown**-Body"
python scripts/gitea/gitea_api.py issues edit 42 --body-file path/to/body.md

# Schließen / wieder öffnen
python scripts/gitea/gitea_api.py issues close 42
python scripts/gitea/gitea_api.py issues reopen 42

# Alle Issues (alle Seiten, Vorsicht bei großen Repos)
python scripts/gitea/gitea_api.py issues list --all-pages --state open

# Markdown-Datei (z. B. Audit-Template) als Issue-Body
python scripts/gitea/gitea_api.py issues create --title "…" --body-file .claude/docs/audit/.../gitea/TEMPLATE_P0-....md
```

## Repository-Inhalt (read-only)

```powershell
# Datei über Gitea-API (bei Dateien: Text-Inhalt; bei Verzeichnissen: JSON-Listing)
python scripts/gitea/gitea_api.py repo file README.md

python scripts/gitea/gitea_api.py repo file backend/main.py --ref develop

# Clone/Push: normales `git remote` – Token nicht dauerhaft in der Remote-URL; SSH oder Credential Helper.
```

## Sicherheit

- **Niemals** `GITEA_TOKEN` ins Git oder in Issues/Pastebins.
- Token, das in Chat oder Logs gelandet ist, in Gitea **widerrufen** und **neu erzeugen**.
- Cursor-Agenten können das CLI über das Terminal nutzen, wenn `.env` gesetzt und Netzwerk zu `GITEA_BASE_URL` erreichbar ist.

## MCP (Tools direkt im Agent)

Siehe [`MCP_SETUP.md`](./MCP_SETUP.md) und [`../.cursor/mcp.json.example`](../../.cursor/mcp.json.example).  
Nach dem Hinzufügen neuer MCP-Tools Cursor einmal **neu starten**, damit die Tool-Liste aktualisiert wird.
