import tempfile
import time
from glob import glob
+import fnmatch
import argparse
import socket
import json
# Update Logic
def updateAllSources():
# Update all hosts files regardless of folder depth
- allsources = glob('*/**/' + settings["sourcedatafilename"], recursive=True)
+ # allsources = glob('*/**/' + settings["sourcedatafilename"], recursive=True)
+ allsources = recursiveGlob("*", settings["sourcedatafilename"])
for source in allsources:
updateFile = open(source, "r")
updateData = json.load(updateFile)
mergeFile = tempfile.NamedTemporaryFile()
# spin the sources for the base file
- for source in glob(settings["datapath"] + "/**/" + settings["hostfilename"], recursive=True):
+ for source in recursiveGlob(settings["datapath"], settings["hostfilename"]):
with open(source, "r") as curFile:
#Done in a cross-python way
writeData(mergeFile, curFile.read())
- for source in glob(settings["datapath"] + "/**/" + settings["sourcedatafilename"], recursive=True):
+ for source in recursiveGlob(settings["datapath"], settings["sourcedatafilename"]):
updateFile = open(source, "r")
updateData = json.load(updateFile)
settings["sourcesdata"].append(updateData)
# spin the sources for extensions to the base file
for source in settings["extensions"]:
# filename = os.path.join(settings["extensionspath"], source, settings["hostfilename"])
- for filename in glob(os.path.join(settings["extensionspath"], source) + "/**/" + settings["hostfilename"], recursive=True):
+ for filename in recursiveGlob(os.path.join(settings["extensionspath"], source), settings["hostfilename"]):
with open(filename, "r") as curFile:
#Done in a cross-python way
writeData(mergeFile, curFile.read())
# updateFilePath = os.path.join(settings["extensionspath"], source, settings["sourcedatafilename"])
- for updateFilePath in glob( os.path.join(settings["extensionspath"], source) + "/**/" + settings["sourcedatafilename"], recursive=True):
+ for updateFilePath in recursiveGlob( os.path.join(settings["extensionspath"], source), settings["sourcedatafilename"]):
updateFile = open(updateFilePath, "r")
updateData = json.load(updateFile)
settings["sourcesdata"].append(updateData)
else:
return True
+# A version-independent glob( ... "/**/" ... )
+def recursiveGlob(stem, filepattern):
+ if sys.version_info >= (3,5):
+ return glob(stem + "/**/" + filepattern, recursive=True)
+ else:
+ if stem == "*":
+ stem = "."
+ matches = []
+ for root, dirnames, filenames in os.walk(stem):
+ for filename in fnmatch.filter(filenames, filepattern):
+ matches.append(os.path.join(root, filename))
+ return matches
+
+
# Colors
class colors:
PROMPT = "\033[94m"