74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
"""Forgejo Git/Issue Tools."""
|
|
|
|
from core import config, forgejo_client
|
|
|
|
TOOLS = [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "get_forgejo_status",
|
|
"description": "Forgejo Git-Server Status: Repos, offene Issues, letzte Commits.",
|
|
"parameters": {"type": "object", "properties": {}, "required": []},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "create_issue",
|
|
"description": "Neues Forgejo-Issue/TODO erstellen.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {"type": "string", "description": "Titel des Issues"},
|
|
"body": {"type": "string", "description": "Beschreibung (optional)", "default": ""}
|
|
},
|
|
"required": ["title"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "close_issue",
|
|
"description": "Forgejo-Issue als erledigt schliessen.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"number": {"type": "number", "description": "Issue-Nummer"}
|
|
},
|
|
"required": ["number"],
|
|
},
|
|
},
|
|
},
|
|
]
|
|
|
|
|
|
def handle_get_forgejo_status(**kw):
|
|
cfg = config.parse_config()
|
|
forgejo_client.init(cfg)
|
|
return forgejo_client.format_overview()
|
|
|
|
|
|
def handle_create_issue(title, body="", **kw):
|
|
cfg = config.parse_config()
|
|
forgejo_client.init(cfg)
|
|
result = forgejo_client.create_issue(title, body)
|
|
if "error" in result:
|
|
return result["error"]
|
|
return f"Issue #{result['number']} erstellt: {result['title']}"
|
|
|
|
|
|
def handle_close_issue(number, **kw):
|
|
cfg = config.parse_config()
|
|
forgejo_client.init(cfg)
|
|
result = forgejo_client.close_issue(int(number))
|
|
if "error" in result:
|
|
return result["error"]
|
|
return f"Issue #{result['number']} geschlossen: {result['title']}"
|
|
|
|
|
|
HANDLERS = {
|
|
"get_forgejo_status": handle_get_forgejo_status,
|
|
"create_issue": handle_create_issue,
|
|
"close_issue": handle_close_issue,
|
|
}
|