Source code for robota_core.github_tools

from loguru import logger

import github
import github.Repository

from robota_core import RemoteProviderError


[docs]class GithubServer: """A connection to GitHub. Contains methods for interfacing with the API.""" def __init__(self, setup: dict): """ Initialise the connection to the server, getting credentials from the credentials file. :param setup: dictionary containing GitHub url and authentication token. """ self.url = setup["url"] self.server = self._open_gitlab_connection(setup) @staticmethod def _open_gitlab_connection(setup: dict): """Open a connection to the GitLab server using authentication token.""" token = None if "token" in setup: token = setup["token"] else: logger.warning("No auth token provided for Github. Beware that API limits are very " "low for unauthenticated users.") return github.Github(token)
[docs] def open_github_repo(self, project_path: str) -> github.Repository.Repository: """Open a GitLab repo. :param project_path: The path of the project to open. Includes namespace. :return: A GitLab project object. """ try: repo = self.server.get_repo(project_path) except github.UnknownObjectException: raise RemoteProviderError(f"Unable to find project: {project_path}. " f"It either does not exist or the current user does not have " f"access to this project.") logger.info(f"Connected to project {repo.name}") return repo