def comment_on_github_pr()

in utils/comment-github-pr.py [0:0]


def comment_on_github_pr(message):
    """Comment on a PR. (assumes the script is invoked in a github workflow)"""

    # There is no message to be reported, skip
    if not message:
        return 0

    # Check whether called via workflow
    token = os.getenv("GITHUB_TOKEN")
    if not token:
        log.error("Did not find GITHUB_TOKEN environment variable, abort")
        return 1

    github_handle = Github(token)
    # Enable to see API
    # log.info("github handle: %r", dir(github_handle))

    # Check the current event
    event_file = os.getenv("GITHUB_EVENT_PATH")
    event = None
    try:
        with open(event_file) as f:
            event = json.load(f)
    except Exception as e:
        log.error("Failed to load event from file %s, failed with %r", event_file, e)
    log.debug("Obtained event: %s", json.dumps(event, indent=4))

    if not event:
        log.error("Did not find an even file, abort.")
        return 1

    # Get repository for current event
    # https://pygithub.readthedocs.io/en/latest/github_objects/Repository.html
    repo_name = event["repository"]["full_name"]
    repo = github_handle.get_repo(repo_name)

    # Get pull request object for current event
    # https://pygithub.readthedocs.io/en/latest/github_objects/PullRequest.html
    pr_event = event.get("pull_request")
    if pr_event:
        pull_request_number = pr_event["number"]
        pull_request = repo.get_pull(int(pull_request_number))
        # Enable to see API
        # log.info("pull request: %r", dir(pull_request))

        # Create and post message to comment stream
        pull_request.create_issue_comment(message)
    else:
        log.info("Current event is not a pull request, do not comment.")