unfinished changes, needs to be continued
This commit is contained in:
67
userconfig/__init__.py
Normal file
67
userconfig/__init__.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from userconfig.tools import get_config
|
||||
import subprocess
|
||||
from userconfig.checks import classes_for_host
|
||||
|
||||
class Userconfig():
|
||||
_cfg = None
|
||||
|
||||
def __init__(self, cfg):
|
||||
self._cfg = cfg
|
||||
|
||||
def workdir(self, directory):
|
||||
"""walks through all host classes, checking if the classes directory exists in directory
|
||||
then collect all filenames within this directory and return a dict of all files for this
|
||||
directory
|
||||
"""
|
||||
self._cfg.debug.stdout(" ================ workdir ===============", 1)
|
||||
self._cfg.debug.stdout(" Working on directory %s" % directory, 3)
|
||||
# skip directory if no CONFIGFILE present
|
||||
if not os.path.isfile(directory+"/"+self._cfg.get("configfile")):
|
||||
self._cfg.debug.stdout(f' --- No file {self._cfg.get("configfile")} in {directory}, skipping.', 1)
|
||||
return {}, None
|
||||
|
||||
# get config file for directory
|
||||
dir_config = get_config(directory + "/" + cfg.get("configfile"))
|
||||
if not dir_config:
|
||||
self._cfg.debug.stdout(f' --- Cannot read config file {self._cfg.get("configfile")} in {directory}, skipping.', 1)
|
||||
return {}, None
|
||||
|
||||
destdir = dir_config.get(section="Main",option="dest")
|
||||
# destfiles is a dict of all files that will be created from the classes config
|
||||
# key is the destination filename, values are all classes filenames that are used to
|
||||
# build the file
|
||||
destfiles = {}
|
||||
reverse_sort = False
|
||||
try:
|
||||
reverse_sort = dir_config.get(section="Main", option="reverse", boolean=True)
|
||||
except ValueError:
|
||||
reverse_sort = False
|
||||
|
||||
if os.access(directory + "/install.sh", os.X_OK):
|
||||
subprocess.call([directory + "/install.sh"])
|
||||
|
||||
# walk through all know classes in directory and find filenames
|
||||
for h in classes_for_host(reverse_sort): #### continue here
|
||||
# build classes directory
|
||||
if h[0] != "":
|
||||
classdir = directory+"/"+h[0]+"_"+h[1]
|
||||
else:
|
||||
classdir = directory+"/"+h[1]
|
||||
debug.stdout(" ??? Looking for directory %s." % classdir, 4)
|
||||
# if class directory exists
|
||||
if os.path.isdir(classdir):
|
||||
debug.stdout(" +++ Found directory %s, getting files." % classdir, 4)
|
||||
# get list of files within this class directory
|
||||
tempfiles = workconf(classdir)
|
||||
debug.stdout(" +++ Got %d files: %s." % (len(tempfiles), str(tempfiles)), 4)
|
||||
# put files into dict
|
||||
for f in tempfiles:
|
||||
destname = destdir+os.path.basename(f) # destination filename
|
||||
if not destname in destfiles:
|
||||
destfiles[destname] = []
|
||||
destfiles[destname].append(f) # append each file to dict
|
||||
debug.stdout(" +++ Added file to %s, now %d files: %s" % (destname, len(destfiles[destname]), destfiles[destname]), 4)
|
||||
|
||||
debug.stdout(" === workdir: %s, Files: %s" % (directory, str(destfiles)), 3)
|
||||
debug.stdout(" ================ workdir ===============", 1)
|
||||
return destfiles, dir_config
|
||||
Reference in New Issue
Block a user