|
|
@@ -0,0 +1,95 @@
|
|
|
+"""
|
|
|
+For each parameter which can be found in the config file,
|
|
|
+create a markdown file with a templated content if it does not exist yet.
|
|
|
+The files are grouped in sub folders representing the config sections.
|
|
|
+"""
|
|
|
+
|
|
|
+import os
|
|
|
+import configparser
|
|
|
+import urllib.request
|
|
|
+
|
|
|
+
|
|
|
+configFileUrl = "https://raw.githubusercontent.com/jomjol/AI-on-the-edge-device/rolling/sd-card/config/config.ini"
|
|
|
+
|
|
|
+parameterDocsFolder = "parameter-pages"
|
|
|
+parameterTemplateFile = "./templates/parameter.md"
|
|
|
+expertParameterListFile = "./expert-params.txt"
|
|
|
+hiddenInUiParameterListFile = "./hidden-in-ui.txt"
|
|
|
+
|
|
|
+
|
|
|
+# Fetch default config file from URL
|
|
|
+print("Fetching %r..." % configFileUrl)
|
|
|
+with urllib.request.urlopen(configFileUrl) as response:
|
|
|
+ content = response.read().decode("utf-8")
|
|
|
+
|
|
|
+lines = str(content).split("\n")
|
|
|
+
|
|
|
+for l in range(len(lines)):
|
|
|
+ lines[l] = lines[l].strip() + "\n"
|
|
|
+ if lines[l][0] == ";":
|
|
|
+ lines[l] = lines[l][1:] # Remove comment
|
|
|
+
|
|
|
+content = "".join(lines)
|
|
|
+
|
|
|
+# Fetch list of expert parameters
|
|
|
+with open(expertParameterListFile) as f:
|
|
|
+ expertParameters = f.read().splitlines()
|
|
|
+
|
|
|
+# Fetch list of parameters not available through the UI
|
|
|
+with open(hiddenInUiParameterListFile) as f:
|
|
|
+ hiddenInUiParameters = f.read().splitlines()
|
|
|
+
|
|
|
+
|
|
|
+config = configparser.ConfigParser(allow_no_value=True)
|
|
|
+config.optionxform = str # Make it case-insensitive
|
|
|
+config.read_string(content)
|
|
|
+
|
|
|
+#shutil.rmtree(parameterDocsFolder)
|
|
|
+if not os.path.exists(parameterDocsFolder):
|
|
|
+ os.mkdir(parameterDocsFolder)
|
|
|
+
|
|
|
+with open(parameterTemplateFile, 'r') as parameterTemplateFileHandle:
|
|
|
+ parameterTemplate = parameterTemplateFileHandle.read()
|
|
|
+
|
|
|
+
|
|
|
+print("For each section/parameter, check if there is already a documentation page in the folder %r..." % (os.getcwd() + "/" + parameterDocsFolder))
|
|
|
+for section in config:
|
|
|
+ if section != "DEFAULT":
|
|
|
+ #print(section)
|
|
|
+
|
|
|
+ subFolder = parameterDocsFolder + "/" + section
|
|
|
+
|
|
|
+ if not os.path.exists(subFolder):
|
|
|
+ os.mkdir(subFolder)
|
|
|
+
|
|
|
+ for parameter in config[section]:
|
|
|
+ if not " " in parameter: # Ignore parameters with whitespaces in them (special format, not part of editable config)
|
|
|
+ value = config[section][parameter]
|
|
|
+ #print(" %s = %s" % (parameter, value))
|
|
|
+
|
|
|
+ if "main." in parameter:
|
|
|
+ parameter = parameter.replace("main.", "NUMBER.")
|
|
|
+
|
|
|
+ """
|
|
|
+ For each config line, create a markdown file
|
|
|
+ """
|
|
|
+ parameterDocFile = subFolder + '/' + parameter + ".md"
|
|
|
+
|
|
|
+ if not os.path.exists(parameterDocFile): # File does not exist yet, generate template
|
|
|
+ print("%r does not exit yet, generating a templated file for it" % (os.getcwd() + "/" + parameterDocFile))
|
|
|
+ with open(parameterDocFile, 'w') as paramFileHandle:
|
|
|
+ content = parameterTemplate
|
|
|
+ content = content.replace("$NAME", parameter)
|
|
|
+ content = content.replace("$DEFAULT", value)
|
|
|
+
|
|
|
+ if parameter in expertParameters:
|
|
|
+ content = content.replace("$EXPERT_PARAMETER", "!!! Warning\n This is an **Expert Parameter**! Only change it if you understand what it does!") # Note: Needs a 4 whitespace Intent!
|
|
|
+ else:
|
|
|
+ content = content.replace("$EXPERT_PARAMETER", "")
|
|
|
+
|
|
|
+ if parameter in hiddenInUiParameters:
|
|
|
+ content = content.replace("$HIDDEN_IN_UI", "!!! Note\n This parameter is not accessible through the Web Interface Configuration Page!") # Note: Needs a 4 whitespace Intent!
|
|
|
+ else:
|
|
|
+ content = content.replace("$HIDDEN_IN_UI", "")
|
|
|
+
|
|
|
+ paramFileHandle.write(content)
|