| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- """
- 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)
|