from git import Repo import os class FormulaRepo(): # class variables repo_url = '' repo_path = '' repo = None # class constructor def __init__(self, formula): self.repo_url = formula.git_url self.repo_path = formula.local_path # retrieves repo from remote location def retrieve(self): # check if the destination directory exists if not os.path.exists(self.repo_path): # clone git repo print('Downloading ' + self.repo_url + ' into ' + self.repo_path) self.repo = Repo.clone_from(self.repo_url, self.repo_path) else: # let the user know it's already downloaded so we'll update it later print(self.repo_path + ' already exists, so we\'re not downloading it again.') self.repo = Repo(self.repo_path) # check if the repo is up to date def check_tracking_info(self, tracking_key, tracking_value): if tracking_key == 0: # tracking a specific branch on the repo if tracking_value != False: repo_branch = self.repo.head.reference # check to make sure that the current tracked branch is, in fact, what we want if repo_branch != tracking_value: self.repo.head.reference = repo_branch # let the user know which branch we're using print('For %s, we\'re using the %s branch.' % (self.repo_path, self.repo.head.reference)) elif tracking_key == 1: # tracking a specific tag on the repo print('Tracking a tag') elif tracking_key == 2: # tracking a specific commit on the repo print('Tracking a commit') else: # we shouldn't get here... print('We shouldn\'t have a tracking key that is not 0, 1 or 2') # pull any new updates for the repo def pull_updates(self): print('Pulling updates for %s.' % self.repo_path) # git pull self.repo.remotes.origin.pull()