Konzept-Ansicht: Repo-URL auch in Markdown-Backticks erkennen
Der Worker schreibt die Repo-URL in der Abschluss-Zusammenfassung als
`https://...` — die Lookahead-Liste der Regex kannte den Backtick nicht,
also fand die Konzept-Ansicht kein Repo ('wird gerade vorbereitet') obwohl
Repo + KONZEPT.md laengst da waren. Fix: greedy matchen, Treffer hinterher
saeubern (Backticks/Satzzeichen/.git) statt das Endezeichen zu raten.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -582,10 +582,22 @@ def prio_task(task_id: str, richtung: str) -> dict:
|
||||
# ~/.git-credentials), damit der Commander es DIREKT im Auftragsbuch liest,
|
||||
# ohne das Repo aufzumachen (User-Wunsch 20.07.).
|
||||
_GITEA_HOST = "git.tobisniceshomelab.ddnsfree.com"
|
||||
# Kein Raten am Zeilenende: greedy bis zum ersten Nicht-Repo-Zeichen matchen und den
|
||||
# Treffer HINTERHER säubern. (Der Worker schreibt die URL gern in Markdown-Backticks —
|
||||
# eine Lookahead-Liste erwischt sowas nie zuverlässig, Bug-Fund 20.07.)
|
||||
_GITEA_REPO_RX = re.compile(
|
||||
re.escape(_GITEA_HOST) + r"/([A-Za-z0-9_.-]+/[A-Za-z0-9_][A-Za-z0-9_.-]*?)(?:\.git)?(?=[\s)\"'<>]|/?$)"
|
||||
re.escape(_GITEA_HOST) + r"/([A-Za-z0-9_.-]+/[A-Za-z0-9_][A-Za-z0-9_.-]*)"
|
||||
)
|
||||
_REPO_FALLBACK_RX = re.compile(r"[Rr]epo\S*[:\s]+([A-Za-z0-9_.-]+/[A-Za-z0-9_][A-Za-z0-9_.-]*)")
|
||||
_REPO_FALLBACK_RX = re.compile(r"[Rr]epo\S*[:\s]+[`'\"]?([A-Za-z0-9_.-]+/[A-Za-z0-9_][A-Za-z0-9_.-]*)")
|
||||
|
||||
|
||||
def _clean_repo(raw: str) -> str | None:
|
||||
"""Trailing Markdown-/Satzzeichen und .git vom Treffer abschneiden."""
|
||||
r = (raw or "").strip().strip("`'\"")
|
||||
r = r.rstrip(".,;:)»>")
|
||||
r = re.sub(r"\.git$", "", r)
|
||||
r = r.rstrip(".,;:")
|
||||
return r or None
|
||||
_KONZEPT_NAMES = ("KONZEPT.md", "Konzept.md", "konzept.md", "CONCEPT.md")
|
||||
_konzept_cache: dict = {}
|
||||
|
||||
@@ -609,9 +621,9 @@ def _extract_repo(text: str) -> str | None:
|
||||
return None
|
||||
m = _GITEA_REPO_RX.search(text)
|
||||
if m:
|
||||
return m.group(1)
|
||||
return _clean_repo(m.group(1))
|
||||
m = _REPO_FALLBACK_RX.search(text)
|
||||
return m.group(1) if m else None
|
||||
return _clean_repo(m.group(1)) if m else None
|
||||
|
||||
|
||||
def konzept_of(task_id: str) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user