feat: close issues after merged agent PRs
This commit is contained in:
@@ -23,6 +23,8 @@ class GiteaIssue:
|
||||
class GiteaPullRequest:
|
||||
number: int
|
||||
html_url: str
|
||||
state: str
|
||||
merged: bool
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -131,7 +133,12 @@ class GiteaClient:
|
||||
)
|
||||
response.raise_for_status()
|
||||
payload = response.json()
|
||||
return GiteaPullRequest(number=int(payload["number"]), html_url=payload.get("html_url") or "")
|
||||
return pull_request_from_payload(payload)
|
||||
|
||||
def get_pull_request(self, *, owner: str, name: str, pr_number: int) -> GiteaPullRequest:
|
||||
response = self.client.get(f"/repos/{owner}/{name}/pulls/{pr_number}")
|
||||
response.raise_for_status()
|
||||
return pull_request_from_payload(response.json())
|
||||
|
||||
def post_issue_comment(self, *, owner: str, name: str, issue_number: int, body: str) -> None:
|
||||
response = self.client.post(
|
||||
@@ -140,6 +147,13 @@ class GiteaClient:
|
||||
)
|
||||
response.raise_for_status()
|
||||
|
||||
def close_issue(self, *, owner: str, name: str, issue_number: int) -> None:
|
||||
response = self.client.patch(
|
||||
f"/repos/{owner}/{name}/issues/{issue_number}",
|
||||
json={"state": "closed"},
|
||||
)
|
||||
response.raise_for_status()
|
||||
|
||||
|
||||
def clone_url_from_repo_payload(payload: dict[str, Any], fallback_base_url: str, owner: str, name: str) -> str:
|
||||
return (
|
||||
@@ -168,3 +182,13 @@ def repository_from_payload(payload: dict[str, Any], fallback_base_url: str) ->
|
||||
clone_url=clone_url_from_repo_payload(payload, fallback_base_url, str(owner), str(name)),
|
||||
default_branch=payload.get("default_branch") or "main",
|
||||
)
|
||||
|
||||
|
||||
def pull_request_from_payload(payload: dict[str, Any]) -> GiteaPullRequest:
|
||||
merged = bool(payload.get("merged") or payload.get("has_merged") or payload.get("merged_at"))
|
||||
return GiteaPullRequest(
|
||||
number=int(payload["number"]),
|
||||
html_url=payload.get("html_url") or payload.get("url") or "",
|
||||
state=payload.get("state") or "",
|
||||
merged=merged,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user