mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-06 11:36:51 +03:00
96 lines
3.7 KiB
Python
96 lines
3.7 KiB
Python
"""
|
|
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)
|