mirror of https://github.com/mongodb/mongo
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
"""Helper functions to interact with github."""
|
|
|
|
from github import Github, GithubException
|
|
|
|
|
|
class GithubConnError(Exception):
|
|
"""Errors in github_conn.py."""
|
|
|
|
pass
|
|
|
|
|
|
def get_git_tag_and_commit(github_oauth_token, version):
|
|
"""Return git tag and commit hash by associating the version with git tag."""
|
|
|
|
github = Github(github_oauth_token)
|
|
repo = github.get_repo("mongodb/mongo")
|
|
|
|
try:
|
|
git_ref_list = list(repo.get_git_matching_refs(f"tags/r{version}"))
|
|
if git_ref_list:
|
|
# If git tag fully matches the version, it will be only one git_ref in the list,
|
|
# otherwise picking up the latest git_ref
|
|
git_ref = git_ref_list[-1]
|
|
git_tag = repo.get_git_tag(git_ref.object.sha)
|
|
git_commit = repo.get_commit(git_tag.object.sha)
|
|
|
|
return git_tag.tag, git_commit.sha
|
|
else:
|
|
# No git tag, try getting the commit directly.
|
|
git_commit = repo.get_commit(version)
|
|
return None, git_commit.sha
|
|
|
|
except GithubException as gh_exception:
|
|
raise GithubConnError(f"Commit hash for {version} not found. Error: {str(gh_exception)}")
|