Skip to content

Commit 1038181

Browse files
UndinSpace Team
authored and
Space Team
committed
Add issue number for commit created by drop_platform_support.py script
1 parent 834aa35 commit 1038181

File tree

3 files changed

+37
-15
lines changed

3 files changed

+37
-15
lines changed

helpers/drop_platform_support.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
from pathlib import Path
88
from typing import Dict, TypeVar, Tuple, Optional
99

10-
from external_services import commit_changes_to_educational_plugin, create_review_in_educational_plugin, get_reviewer, has_branch
10+
from external_services import commit_changes_to_educational_plugin, create_review_in_educational_plugin, get_reviewer, has_branch, \
11+
get_youtrack_issue, YoutrackIssue
1112

1213
K = TypeVar('K')
1314
V = TypeVar('V')
@@ -89,7 +90,7 @@ def process_gradle_properties(platform_version: int) -> Changes:
8990
}
9091

9192

92-
def commit_changes(space_token: str, platform_version: int, changes: Changes):
93+
def commit_changes(space_token: str, platform_version: int, issue: Optional[YoutrackIssue], changes: Changes):
9394
files = []
9495
for path, (modification, content) in changes.items():
9596
if modification == FileModification.Delete:
@@ -104,10 +105,15 @@ def commit_changes(space_token: str, platform_version: int, changes: Changes):
104105
"content": {"className": "GitFileContent.Base64", "value": base64_content_value}
105106
})
106107

108+
if issue:
109+
commit_message = f"EDU-{issue.issue_number}: Drop {platform_version} support"
110+
else:
111+
commit_message = f"Drop {platform_version} support"
112+
107113
commit_changes_to_educational_plugin(
108114
space_token=space_token,
109115
branch_name=f"refs/heads/{branch(platform_version)}",
110-
commit_massage=f"Drop {platform_version} support",
116+
commit_massage=commit_message,
111117
changes=files
112118
)
113119

@@ -116,8 +122,8 @@ def branch(platform_version: int) -> str:
116122
return f"drop-{platform_version}"
117123

118124

119-
def create_review(space_token: str, youtrack_token: str, platform_version: int):
120-
reviewer = get_reviewer(youtrack_token, "edu: drop platform", platform_version)
125+
def create_review(space_token: str, platform_version: int, issue: Optional[YoutrackIssue]):
126+
reviewer = get_reviewer(issue)
121127
create_review_in_educational_plugin(space_token, branch(platform_version), f"Drop support for {platform_version} platform", reviewer)
122128

123129

@@ -139,9 +145,10 @@ def main():
139145
print(f"{branch_name} already exists")
140146
return
141147

148+
issue = get_youtrack_issue(args.youtrack_token, "edu: drop platform", platform_version)
142149
changes = collect_changes(platform_version)
143-
commit_changes(args.space_token, platform_version, changes)
144-
create_review(args.space_token, args.youtrack_token, platform_version)
150+
commit_changes(args.space_token, platform_version, issue, changes)
151+
create_review(args.space_token, platform_version, issue)
145152

146153

147154
if __name__ == '__main__':

helpers/external_services.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def has_branch(space_token: str, branch_name: str) -> bool:
4242

4343
def get_youtrack_issues(youtrack_token: str, tag: str, text_query: str) -> List[Dict]:
4444
query_params = urlencode({
45-
"fields": "summary,customFields(name,value(name))",
45+
"fields": "summary,numberInProject,customFields(name,value(name))",
4646
"customFields": "Assignee",
4747
"query": f"tag: {{{tag}}} project: EDU {text_query}"
4848
}, quote_via=quote)
@@ -58,22 +58,36 @@ def full_platform_version(platform_version: int) -> str:
5858
return f"20{platform_version // 10}.{platform_version % 10}"
5959

6060

61+
class YoutrackIssue:
62+
def __init__(self, issue_number: int, assignee_name: str):
63+
self.issue_number = issue_number
64+
self.assignee_name = assignee_name
65+
66+
6167
DEFAULT_REVIEWER = "Arseniy.Pendryak"
6268

6369

64-
def get_reviewer(youtrack_token: str, tag: str, platform_version: int) -> str:
70+
def get_reviewer(issue: Optional[YoutrackIssue]) -> str:
71+
if not issue:
72+
return DEFAULT_REVIEWER
73+
# More heuristic solution than 100% reliable way
74+
# but it seems it works for all possible cases for now.
75+
return issue.assignee_name.replace(" ", ".")
76+
77+
def get_youtrack_issue(youtrack_token: str, tag: str, platform_version: int) -> Optional[YoutrackIssue]:
6578
issues = get_youtrack_issues(youtrack_token, tag, str(platform_version))
6679
if not issues:
6780
issues = get_youtrack_issues(youtrack_token, tag, full_platform_version(platform_version))
6881

6982
if not issues:
70-
return DEFAULT_REVIEWER
83+
return None
7184

7285
# Expected json format:
7386
# ```
7487
# [
7588
# {
7689
# "summary" : "%summary_text%",
90+
# "numberInProject" : "%issue_number%",
7791
# "customFields" : [
7892
# {
7993
# "value" : {
@@ -88,10 +102,9 @@ def get_reviewer(youtrack_token: str, tag: str, platform_version: int) -> str:
88102
# }
89103
# ]
90104
# ```
105+
issue_number: int = issues[0]["numberInProject"]
91106
assignee_name: str = issues[0]["customFields"][0]["value"]["name"]
92-
# More heuristic solution than 100% reliable way
93-
# but it seems it works for all possible cases for now.
94-
return assignee_name.replace(" ", ".")
107+
return YoutrackIssue(issue_number, assignee_name)
95108

96109

97110
def make_request(url: str, token: str, method: str, data: Optional[Dict] = None) -> Union[Dict, List]:

helpers/update_platform_dependencies.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import subprocess
55
import sys
66

7-
from external_services import commit_changes_to_educational_plugin, create_review_in_educational_plugin, has_branch, get_reviewer
7+
from external_services import commit_changes_to_educational_plugin, create_review_in_educational_plugin, has_branch, get_reviewer, \
8+
get_youtrack_issue
89

910

1011
def gradle_property_path(platform_version: int) -> str:
@@ -17,7 +18,8 @@ def read_gradle_property_text(platform_version: int) -> str:
1718

1819

1920
def create_review(space_token: str, youtrack_token: str, platform_version: int):
20-
reviewer = get_reviewer(youtrack_token, "edu: support platform", platform_version)
21+
issue = get_youtrack_issue(youtrack_token, "edu: support platform", platform_version)
22+
reviewer = get_reviewer(issue)
2123
create_review_in_educational_plugin(
2224
space_token=space_token,
2325
source_branch=f"update-{platform_version}",

0 commit comments

Comments
 (0)