Support new branches with multiple commits (#25)

Add support for newly created branches with multiple commits
This commit is contained in:
Luis G. Valle 2021-08-26 10:45:28 +02:00 committed by GitHub
parent c159a716fd
commit 83d97eeea1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 4 deletions

View File

@ -12,6 +12,14 @@ inputs:
description: "The path to the repository where the action will be used, e.g. 'alstr/my-repo' (automatically set)"
required: true
default: "${{ github.repository }}"
BEFORE:
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

21
main.py
View File

@ -48,7 +48,9 @@ class GitHubClient(object):
def __init__(self):
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 = {
@ -60,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 commit diff."""
diff_url = f'{self.repos_url}{self.repo}/commits/{self.sha}'
"""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}'
@ -260,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)'
@ -589,7 +603,6 @@ class TodoParser(object):
projects = list(filter(None, projects.split(',')))
return projects
if __name__ == "__main__":
# Create a basic client for communicating with GitHub, automatically initialised with environment variables.
client = GitHubClient()