from git import Repo import os import sys 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, branch): if branch != False: # tracking a specific branch on the repo # check to make sure that the given branch name actually exists first if not branch in self.repo.branches: print('%s is not an existing branch name for %s - please fix this.' % (branch, self.repo_path)) sys.exit(1) 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)) else: # no branch was specified, so we're going with what's there print('Using the default/current branch for %s' % (self.repo_path)) # 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()