salt-formula-manager/lib/Formula.py

60 lines
2.3 KiB
Python
Raw Normal View History

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