mirror of
https://github.com/ditkrg/todo-to-issue-action.git
synced 2026-01-22 22:06:43 +00:00
parent
3e27db4be0
commit
8045cef144
39
main.py
39
main.py
@ -136,8 +136,7 @@ class GitHubClient(object):
|
|||||||
milestone_data = {
|
milestone_data = {
|
||||||
'title': title
|
'title': title
|
||||||
}
|
}
|
||||||
milestone_request = requests.post(self.milestones_url, headers=self.issue_headers,
|
milestone_request = requests.post(self.milestones_url, headers=self.issue_headers, json=milestone_data)
|
||||||
data=json.dumps(milestone_data))
|
|
||||||
return milestone_request.json()['number'] if milestone_request.status_code == 201 else None
|
return milestone_request.json()['number'] if milestone_request.status_code == 201 else None
|
||||||
|
|
||||||
def _get_existing_issues(self, page=1):
|
def _get_existing_issues(self, page=1):
|
||||||
@ -159,8 +158,7 @@ class GitHubClient(object):
|
|||||||
"""Post a comment on an issue."""
|
"""Post a comment on an issue."""
|
||||||
issue_comment_url = f'{self.repos_url}{self.repo}/issues/{issue_number}/comments'
|
issue_comment_url = f'{self.repos_url}{self.repo}/issues/{issue_number}/comments'
|
||||||
body = {'body': comment}
|
body = {'body': comment}
|
||||||
update_issue_request = requests.post(issue_comment_url, headers=self.issue_headers,
|
update_issue_request = requests.post(issue_comment_url, headers=self.issue_headers, json=body)
|
||||||
data=json.dumps(body))
|
|
||||||
return update_issue_request.status_code
|
return update_issue_request.status_code
|
||||||
|
|
||||||
def create_issue(self, issue):
|
def create_issue(self, issue):
|
||||||
@ -235,12 +233,10 @@ class GitHubClient(object):
|
|||||||
|
|
||||||
if issue.issue_url:
|
if issue.issue_url:
|
||||||
# Update existing issue.
|
# Update existing issue.
|
||||||
issue_request = requests.patch(url=endpoint, headers=self.issue_headers,
|
issue_request = requests.patch(url=endpoint, headers=self.issue_headers, json=new_issue_body)
|
||||||
data=json.dumps(new_issue_body))
|
|
||||||
else:
|
else:
|
||||||
# Create new issue.
|
# Create new issue.
|
||||||
issue_request = requests.post(url=endpoint, headers=self.issue_headers,
|
issue_request = requests.post(url=endpoint, headers=self.issue_headers, json=new_issue_body)
|
||||||
data=json.dumps(new_issue_body))
|
|
||||||
|
|
||||||
request_status = issue_request.status_code
|
request_status = issue_request.status_code
|
||||||
return request_status, issue_request.json()['number'] if request_status in [200, 201] else None
|
return request_status, issue_request.json()['number'] if request_status in [200, 201] else None
|
||||||
@ -265,10 +261,31 @@ class GitHubClient(object):
|
|||||||
if issue_number:
|
if issue_number:
|
||||||
update_issue_url = f'{self.issues_url}/{issue_number}'
|
update_issue_url = f'{self.issues_url}/{issue_number}'
|
||||||
body = {'state': 'closed'}
|
body = {'state': 'closed'}
|
||||||
requests.patch(update_issue_url, headers=self.issue_headers, data=json.dumps(body))
|
requests.patch(update_issue_url, headers=self.issue_headers, json=body)
|
||||||
return self.comment_issue(issue_number, f'Closed in {self.sha}')
|
req = self.comment_issue(issue_number, f'Closed in {self.sha}')
|
||||||
|
|
||||||
|
# Update the description if this is a PR.
|
||||||
|
if os.getenv('GITHUB_EVENT_NAME') == 'pull_request':
|
||||||
|
pr_number = os.getenv('PR_NUMBER')
|
||||||
|
if pr_number:
|
||||||
|
req = self.update_pr_body(pr_number, body)
|
||||||
|
return req
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def update_pr_body(self, pr_number, issue_number):
|
||||||
|
"""Add a close message for an issue to a PR."""
|
||||||
|
pr_url = f'{self.repos_url}{self.repo}/pulls/{pr_number}'
|
||||||
|
pr_request = requests.get(pr_url, headers=self.issue_headers)
|
||||||
|
if pr_request.status_code == 200:
|
||||||
|
pr_body = pr_request.json()['body']
|
||||||
|
close_message = f'Closes #{issue_number}'
|
||||||
|
if close_message not in pr_body:
|
||||||
|
updated_pr_body = f'{pr_body}\n\n{close_message}' if pr_body.strip() else close_message
|
||||||
|
body = {'body': updated_pr_body}
|
||||||
|
pr_update_request = requests.patch(pr_url, headers=self.issue_headers, json=body)
|
||||||
|
return pr_update_request.status_code
|
||||||
|
return pr_request.status_code
|
||||||
|
|
||||||
|
|
||||||
class TodoParser(object):
|
class TodoParser(object):
|
||||||
"""Parser for extracting information from a given diff file."""
|
"""Parser for extracting information from a given diff file."""
|
||||||
@ -885,7 +902,7 @@ if __name__ == "__main__":
|
|||||||
print('Issue looks like a comment, will not attempt to close.')
|
print('Issue looks like a comment, will not attempt to close.')
|
||||||
continue
|
continue
|
||||||
status_code = client.close_issue(raw_issue)
|
status_code = client.close_issue(raw_issue)
|
||||||
if status_code == 201:
|
if status_code in [200, 201]:
|
||||||
print('Issue closed')
|
print('Issue closed')
|
||||||
else:
|
else:
|
||||||
print('Issue could not be closed')
|
print('Issue could not be closed')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user