Skip to content

Commit 4274b00

Browse files
committed
align with better alpa's request telling
1 parent 2ac5f97 commit 4274b00

File tree

1 file changed

+37
-21
lines changed

1 file changed

+37
-21
lines changed

manage_package/manage_package.py

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import logging
22
import subprocess
33
import sys
4+
from json import loads
45
from os import environ, getcwd, getenv
56
from pathlib import Path
67

78
from alpa.config import AlpaRepoConfig, MetadataConfig
8-
from alpa.constants import REQUEST_LABEL
9+
from alpa.constants import REQUEST_LABEL, RequestEnum
910
from alpa.gh import GithubAPI
1011
from alpa.repository.branch import AlpaRepoBranch
1112
from copr.v3.proxies.package import PackageProxy
@@ -49,7 +50,7 @@ def _refuse_and_close(issue: Issue) -> None:
4950

5051
@staticmethod
5152
def _get_desired_package(issue: Issue) -> str:
52-
return issue.body.split()[-1]
53+
return loads(issue.body)["package"]
5354

5455
def _delete_package(self, issue_request: Issue) -> bool:
5556
pkg = self._get_desired_package(issue_request)
@@ -81,38 +82,53 @@ def _request_package(self, issue_request: Issue) -> bool:
8182
logger.error(f"Exception appeared when requesting package {exc}")
8283
return False
8384

85+
@staticmethod
86+
def is_new_pkg_request(issue: Issue) -> bool:
87+
return loads(issue.body)["request_type"] == RequestEnum.create
88+
89+
@staticmethod
90+
def is_delete_pkg_request(issue: Issue) -> bool:
91+
return loads(issue.body)["request_type"] == RequestEnum.delete
92+
93+
def handle_issue(self, issue: Issue) -> bool:
94+
if (
95+
not self.alpa_repo_config.allow_foreign_contributing
96+
and self.is_new_pkg_request(issue)
97+
):
98+
logger.info(
99+
f"This repo doesn't not support foreign contributing, "
100+
f"closing issue #{issue.number}"
101+
)
102+
self._refuse_and_close(issue)
103+
return True
104+
105+
if self.is_new_pkg_request(issue):
106+
result = self._request_package(issue)
107+
else:
108+
result = self._delete_package(issue)
109+
110+
issue.edit(state="closed")
111+
if result:
112+
issue.create_comment("Request was successfully completed")
113+
return True
114+
115+
return False
116+
84117
def react_to_trigger(self) -> int:
85118
issue_requests = self.gh_repo.get_issues("open", [REQUEST_LABEL]) or []
86119
filtered_issue_requests = []
87120
for issue in issue_requests:
88-
if issue.title.startswith(
89-
"[alpa request-new-package]"
90-
) or issue.title.startswith("[alpa delete-package]"):
121+
if self.is_delete_pkg_request(issue) or self.is_new_pkg_request(issue):
91122
filtered_issue_requests.append(issue)
92123

93124
if not filtered_issue_requests:
94125
logger.info("No issue requests to react to.")
95126
return 0
96127

97128
logger.info(f"Issue requests to react to {filtered_issue_requests}")
98-
if not self.alpa_repo_config.allow_foreign_contributing:
99-
logger.info("This repo doesn't not support foreign contributing.")
100-
for i, issue in enumerate(filtered_issue_requests):
101-
if issue.title.startswith("[alpa request-new-package]"):
102-
self._refuse_and_close(issue)
103-
filtered_issue_requests.pop(i)
104-
105129
status = 0
106130
for issue in filtered_issue_requests:
107-
if issue.title.startswith("[alpa request-new-package]"):
108-
result = self._request_package(issue)
109-
else:
110-
result = self._delete_package(issue)
111-
112-
issue.edit(state="closed")
113-
if result:
114-
issue.create_comment("Request was successfully completed")
115-
else:
131+
if not self.handle_issue(issue):
116132
status = 1
117133

118134
return status

0 commit comments

Comments
 (0)