Broke some functionality out into classes for cleaner code
This commit is contained in:
47
lib/Formula.py
Normal file
47
lib/Formula.py
Normal file
@ -0,0 +1,47 @@
|
||||
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.parse_entry(formula_def)
|
||||
|
||||
# sets the formula's git_url and local_path variables
|
||||
def parse_entry(self, formula_def):
|
||||
# define our function variables here
|
||||
git_url = ''
|
||||
local_path = ''
|
||||
|
||||
# check if the formula entry is a string or a dictionary
|
||||
if isinstance(formula_def, dict):
|
||||
# entry is a dictionary
|
||||
# check if the formula's name was defined
|
||||
if not 'name' in formula_def:
|
||||
# set the formula's name if need be
|
||||
name_partial = [k for i, k in enumerate(formula_def.keys()) if i == 0][0]
|
||||
formula_def['name'] = name_partial + '-formula'
|
||||
# check if the dictionary has a git URL defined
|
||||
if 'url' in formula_def:
|
||||
git_url = str(formula_def['url'])
|
||||
else:
|
||||
git_url = str(self.formulas_url) + str(formula_def) + '-formula'
|
||||
# put together the local
|
||||
local_path = str(self.formulas_dir) + '/' + str(formula_def['name'])
|
||||
elif isinstance(formula_def, str):
|
||||
# entry is a string
|
||||
git_url = str(self.formulas_url) + str(formula_def) + '-formula'
|
||||
local_path = str(self.formulas_dir) + '/' + str(formula_def) + '-formula'
|
||||
else:
|
||||
# entry type is not supported
|
||||
print('One of your formula entries is not a dict or a string (' + str(formula_def) + ') - please fix this.')
|
||||
sys.exit(1)
|
||||
|
||||
# set the class values here
|
||||
self.git_url = git_url
|
||||
self.local_path = local_path
|
26
lib/FormulaRepo.py
Normal file
26
lib/FormulaRepo.py
Normal file
@ -0,0 +1,26 @@
|
||||
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 ' + git_url + ' into ' + self.repo_path)
|
||||
self.repo = Repo.clone_from(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)
|
Reference in New Issue
Block a user