From 42f269d5f9e0829c7dbfa22ccb6b41415e6e4415 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 1 Jan 2023 11:10:35 -0800 Subject: Rename config script --- tools/config-doc.py | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ tools/gen_config_doc.py | 102 ------------------------------------------------ 2 files changed, 102 insertions(+), 102 deletions(-) create mode 100755 tools/config-doc.py delete mode 100644 tools/gen_config_doc.py diff --git a/tools/config-doc.py b/tools/config-doc.py new file mode 100755 index 000000000..98266386e --- /dev/null +++ b/tools/config-doc.py @@ -0,0 +1,102 @@ +#!/usr/bin/python + +import re +import os +import argparse + +_KEYS_FILE = os.path.join( + os.path.dirname(__file__), "../src/main/java/org/traccar/config/Keys.java" +) + + +def get_config_keys(): + """Parses Keys.java to extract keys to be used in configuration files + + Args: None + + Returns: + list: A list of dict containing the following keys - + 'key': A dot separated name of the config key + 'description': A list of str + """ + desc_re = re.compile(r"(/\*\*\n|\s+\*/|\s+\*)") + key_match_re = re.compile(r"\(\n(.+)\);", re.DOTALL) + key_split_re = re.compile(r",\s+", re.DOTALL) + keys = [] + + with open(_KEYS_FILE, "r") as f: + config = re.findall( + r"(/\*\*.*?\*/)\n\s+(public static final Config.*?;)", f.read(), re.DOTALL + ) + for i in config: + try: + key_match = key_match_re.search(i[1]) + if key_match: + terms = [x.strip() for x in key_split_re.split(key_match.group(1))] + key = terms[0].replace('"', "") + description = [ + x.strip().replace("\n", "") + for x in desc_re.sub("\n", i[0]).strip().split("\n\n") + ] + if len(terms) == 3: + description.append(f"Default: {terms[2]}") + keys.append( + { + "key": key, + "description": description, + } + ) + except IndexError: + # will continue if key_match.group(1) or terms[0] does not exist + # for some reason + pass + + return keys + + +def get_html(): + return ("\n").join( + [ + f"""
+
+
+ {x["key"]} config +
+

+ {"
".join(x["description"])} +

+
+
""" + for x in get_config_keys() + ] + ) + + +def get_pug(): + return ("\n").join( + [ + f""" div(class='card mt-3') + div(class='card-body') + h5(class='card-title') {x["key"]} #[span(class='badge badge-dark') config] + p(class='card-text') {"#[br] ".join(x["description"])}""" + for x in get_config_keys() + ] + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Parses Keys.java to extract keys to be used in configuration files" + ) + parser.add_argument( + "--format", choices=["pug", "html"], default="pug", help="default: 'pug'" + ) + args = parser.parse_args() + + def get_output(): + if args.format == 'html': + return get_html() + + return get_pug() + + print(get_output()) \ No newline at end of file diff --git a/tools/gen_config_doc.py b/tools/gen_config_doc.py deleted file mode 100644 index 98266386e..000000000 --- a/tools/gen_config_doc.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/python - -import re -import os -import argparse - -_KEYS_FILE = os.path.join( - os.path.dirname(__file__), "../src/main/java/org/traccar/config/Keys.java" -) - - -def get_config_keys(): - """Parses Keys.java to extract keys to be used in configuration files - - Args: None - - Returns: - list: A list of dict containing the following keys - - 'key': A dot separated name of the config key - 'description': A list of str - """ - desc_re = re.compile(r"(/\*\*\n|\s+\*/|\s+\*)") - key_match_re = re.compile(r"\(\n(.+)\);", re.DOTALL) - key_split_re = re.compile(r",\s+", re.DOTALL) - keys = [] - - with open(_KEYS_FILE, "r") as f: - config = re.findall( - r"(/\*\*.*?\*/)\n\s+(public static final Config.*?;)", f.read(), re.DOTALL - ) - for i in config: - try: - key_match = key_match_re.search(i[1]) - if key_match: - terms = [x.strip() for x in key_split_re.split(key_match.group(1))] - key = terms[0].replace('"', "") - description = [ - x.strip().replace("\n", "") - for x in desc_re.sub("\n", i[0]).strip().split("\n\n") - ] - if len(terms) == 3: - description.append(f"Default: {terms[2]}") - keys.append( - { - "key": key, - "description": description, - } - ) - except IndexError: - # will continue if key_match.group(1) or terms[0] does not exist - # for some reason - pass - - return keys - - -def get_html(): - return ("\n").join( - [ - f"""
-
-
- {x["key"]} config -
-

- {"
".join(x["description"])} -

-
-
""" - for x in get_config_keys() - ] - ) - - -def get_pug(): - return ("\n").join( - [ - f""" div(class='card mt-3') - div(class='card-body') - h5(class='card-title') {x["key"]} #[span(class='badge badge-dark') config] - p(class='card-text') {"#[br] ".join(x["description"])}""" - for x in get_config_keys() - ] - ) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Parses Keys.java to extract keys to be used in configuration files" - ) - parser.add_argument( - "--format", choices=["pug", "html"], default="pug", help="default: 'pug'" - ) - args = parser.parse_args() - - def get_output(): - if args.format == 'html': - return get_html() - - return get_pug() - - print(get_output()) \ No newline at end of file -- cgit v1.2.3