diff --git a/base/kcconf.py b/base/kcconf.py index a5d2e8e..0dd54ab 100644 --- a/base/kcconf.py +++ b/base/kcconf.py @@ -14,7 +14,14 @@ def configkopano(configs): f.close() for key, newvalue in config.items(): - contents = re.sub(r"^\s*#?\s*{}\s*=.*".format(key), r"{} = {}".format(key, newvalue), contents, 0, re.MULTILINE) + if key == "kccomment": + for line in newvalue: + contents = re.sub(r"^\s*" + re.escape(line), r"#{}".format(line), contents, 0, re.MULTILINE) + elif key == "kcuncomment": + for line in newvalue: + contents = re.sub(r"^\s*#\s*" + re.escape(line) , line, contents, 0, re.MULTILINE) + else: + contents = re.sub(r"^\s*#?\s*{}\s*=.*".format(key), r"{} = {}".format(key, newvalue), contents, 0, re.MULTILINE) with open(filename, "w") as f: f.write(contents) @@ -22,6 +29,7 @@ def configkopano(configs): def parseenvironmentvariables(prependingpath): configs = dict() + for name, value in os.environ.items(): namematch = re.match(r"^KCCONF_([A-Z]+)_([A-Z0-9_]+)$", name) if namematch != None: @@ -30,4 +38,20 @@ def parseenvironmentvariables(prependingpath): configs[prependingpath + filename] = dict() confkey = namematch.group(2).lower() configs[prependingpath + filename][confkey] = value + commentmatch = re.match(r"^KCCOMMENT_([A-Z]+)_([A-Z0-9_]+)$", name) + if commentmatch != None: + filename = commentmatch.group(1).lower() + ".cfg" + try: + configs[prependingpath + filename]["kccomment"].append(value) + except IndexError: + configs[prependingpath + filename]["kccomment"] = [] + configs[prependingpath + filename]["kccomment"].append(value) + uncommentmatch = re.match(r"^KCUNCOMMENT_([A-Z]+)_([A-Z0-9_]+)$", name) + if uncommentmatch != None: + filename = uncommentmatch.group(1).lower() + ".cfg" + try: + configs[prependingpath + filename]["kunccomment"].append(value) + except IndexError: + configs[prependingpath + filename]["kunccomment"] = [] + configs[prependingpath + filename]["kunccomment"].append(value) return configs