import sys class Formula(): # class variables git_url = '' local_path = '' # class constructor def __init__(self, formula_def, formulas_dir, formulas_url): self.formulas_dir = formulas_dir self.formulas_url = formulas_url self.formula_def = formula_def self.parse_entry() # sets the formula's git_url and local_path variables def parse_entry(self): # define our function variables here git_url = '' local_path = '' # check if the formula entry is a string or a dictionary if isinstance(self.formula_def, dict): # entry is a dictionary # check if the formula's name was defined if not 'name' in self.formula_def: # set the formula's name if need be name_partial = [k for i, k in enumerate(self.formula_def.keys()) if i == 0][0] self.formula_def['name'] = name_partial + '-formula' # check if the dictionary has a git URL defined if 'url' in self.formula_def: git_url = str(self.formula_def['url']) else: git_url = str(self.formulas_url) + str(self.formula_def['name']) + '-formula' # put together the local local_path = str(self.formulas_dir) + '/' + str(self.formula_def['name']) elif isinstance(self.formula_def, str): # entry is a string git_url = str(self.formulas_url) + str(self.formula_def) + '-formula' local_path = str(self.formulas_dir) + '/' + str(self.formula_def) + '-formula' else: # entry type is not supported print('One of your formula entries is not a dict or a string (' + str(self.formula_def) + ') - please fix this.') sys.exit(1) # set the class values here self.git_url = git_url self.local_path = local_path # checks to see if a branch, tag, or commit to track has been defined def get_tracking_state(self): if 'track_branch' in self.formula_def: return 0, self.formula_def['track_branch'] elif 'track_tag' in self.formula_def: return 1, self.formula_def['track_tag'] elif 'track_commit' in self.formula_def: return 2, self.formula_def['track_commit'] else: return 0, False