searchIndex = 0
found = False
currentFile = ''
while searchIndex < len(searchOrder) and not found:
currentFile = os.path.join(folder, self.configName + searchOrder[searchIndex])
if os.path.isfile(currentFile):
found = True
searchIndex += 1
if found:
return os.path.normcase(currentFile)
else:
return os.path.normcase(os.path.join(folder, self.configName + '.cson'))
def __contains__(self, key):
return key in self.options
def get(self, key, default=None):
if key not in self.options:
return default
return self.options[key]
def __setitem__(self, key, value):
self.options[key] = value
def load(self):
fileName = self.settingsFileLocation()
if not os.path.exists(fileName):
# make folder
thedir = os.path.dirname(fileName)
if not os.path.exists(thedir):
os.makedirs(thedir)
if not os.path.isdir(thedir):
raise Exception("Configuration folder path does not point to a folder")
self.setDefaults()
f = io.open(fileName, 'r')
try:
ext = os.path.splitext(fileName)[1]
newOptions = cson.loads(f.read())
except (IOError, ModuleNotFoundError):
self.setDefaults()
else:
for key, val in self.options.items():
if key in newOptions:
if val is not None:
assert isinstance(newOptions[key], type(val))
else:
newOptions[key] = self.options[key]
self.options = newOptions
finally:
f.close()
self.overrideSettings()
def insert(self, path):
if not os.path.exists(self.fileName):
# make folder
thedir = os.path.dirname(self.fileName)
if not os.path.exists(thedir):
os.makedirs(thedir)
if not os.path.isdir(thedir):
raise Exception("Configuration folder path does not point to a folder")
f = io.open(self.fileName, 'r')
lines = f.readlines()
f.close()
f = io.open(self.fileName, 'w')
f.write(path.strip() + '\n')
for line in lines:
if line.strip() != path.strip():
f.write(line.strip() + '\n')
f.close()