mirror of
https://github.com/ditkrg/todo-to-issue-action.git
synced 2026-01-22 22:06:43 +00:00
Merge pull request #72 from lgvalle/master
Add alternative diff url for first branch commit
This commit is contained in:
commit
1394166bbd
@ -16,6 +16,10 @@ inputs:
|
||||
description: "The SHA of the last pushed commit (automatically set)"
|
||||
required: true
|
||||
default: "${{ github.event.before }}"
|
||||
COMMITS:
|
||||
description: "An array of commit objects describing the pushed commits"
|
||||
required: true
|
||||
default: "${{ toJSON(github.event.commits) }}"
|
||||
SHA:
|
||||
description: "The SHA of the latest commit (automatically set)"
|
||||
required: true
|
||||
|
||||
19
main.py
19
main.py
@ -50,6 +50,7 @@ class GitHubClient(object):
|
||||
self.repo = os.getenv('INPUT_REPO')
|
||||
self.before = os.getenv('INPUT_BEFORE')
|
||||
self.sha = os.getenv('INPUT_SHA')
|
||||
self.commits = json.loads(os.getenv('INPUT_COMMITS'))
|
||||
self.token = os.getenv('INPUT_TOKEN')
|
||||
self.issues_url = f'{self.repos_url}{self.repo}/issues'
|
||||
self.issue_headers = {
|
||||
@ -61,9 +62,22 @@ class GitHubClient(object):
|
||||
# Retrieve the existing repo issues now so we can easily check them later.
|
||||
self._get_existing_issues()
|
||||
|
||||
def get_timestamp(self, commit):
|
||||
return commit.get('timestamp')
|
||||
|
||||
def get_last_diff(self):
|
||||
"""Get the last diff based on the SHA of the last two commits."""
|
||||
"""Get the last diff."""
|
||||
if self.before != '0000000000000000000000000000000000000000':
|
||||
# There is a valid before SHA to compare with
|
||||
diff_url = f'{self.repos_url}{self.repo}/compare/{self.before}...{self.sha}'
|
||||
elif len(self.commits) == 1:
|
||||
# There is only one commit
|
||||
diff_url = f'{self.repos_url}{self.repo}/commits/{self.sha}'
|
||||
else:
|
||||
# There are several commits: compare with the oldest one
|
||||
oldest = sorted(self.commits, key=self.get_timestamp)[0]['id']
|
||||
diff_url = f'{self.repos_url}{self.repo}/compare/{oldest}...{self.sha}'
|
||||
|
||||
diff_headers = {
|
||||
'Accept': 'application/vnd.github.v3.diff',
|
||||
'Authorization': f'token {self.token}'
|
||||
@ -261,7 +275,6 @@ class GitHubClient(object):
|
||||
else:
|
||||
print('Issue card could not be added to project')
|
||||
|
||||
|
||||
class TodoParser(object):
|
||||
"""Parser for extracting information from a given diff file."""
|
||||
FILE_HUNK_PATTERN = r'(?<=diff)(.*?)(?=diff\s--git\s)'
|
||||
@ -590,9 +603,7 @@ class TodoParser(object):
|
||||
projects = list(filter(None, projects.split(',')))
|
||||
return projects
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if os.getenv('INPUT_BEFORE') != '0000000000000000000000000000000000000000':
|
||||
# Create a basic client for communicating with GitHub, automatically initialised with environment variables.
|
||||
client = GitHubClient()
|
||||
# Get the diff from the last pushed commit.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user