summary refs log tree commit diff
path: root/tools/generate-docs-settings-docs.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/generate-docs-settings-docs.py')
-rwxr-xr-xtools/generate-docs-settings-docs.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/generate-docs-settings-docs.py b/tools/generate-docs-settings-docs.py
new file mode 100755
index 00000000..307be880
--- /dev/null
+++ b/tools/generate-docs-settings-docs.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+import xml.etree.ElementTree as ET
+import argparse
+import re
+
+###############################################################################
+
+
+def strip_new_lines(desc_string):
+    desc_string = re.sub(r"\n\s*", r" ", desc_string)
+    return desc_string
+
+
+def escape_quotes(desc_string):
+    desc_string = re.sub(r"\"", r"\"", desc_string)
+    return desc_string
+
+
+###############################################################################
+
+
+def main(output_path_str, xml_path_str):
+    xml = ET.parse(xml_path_str).getroot()
+
+    doc = ""
+    doc += "/* Generated file. Do not edit. */\n\n"
+
+    for setting in xml:
+        name_set_upper = setting.attrib["name_upper"]
+
+        for property in setting:
+            name_prop_upper = property.attrib["name_upper"]
+            desc_string = ""
+            desc = property.find("description")
+
+            if desc is not None:
+                desc_string = desc.text
+
+            desc_string = strip_new_lines(desc_string)
+            desc_string = escape_quotes(desc_string)
+            desc_string = desc_string.lstrip(" ")
+
+            doc += "#define DESCRIBE_DOC_NM_SETTING_"
+            doc += name_set_upper
+            doc += "_"
+            doc += name_prop_upper
+            doc += ' N_("'
+            doc += desc_string
+            doc += '")\n'
+
+    file = open(output_path_str, "w")
+    file.write(doc)
+    file.close()
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        "--output",
+        metavar="PATH",
+        help="specify output file",
+        required=True,
+    )
+    parser.add_argument(
+        "--xml",
+        metavar="PATH",
+        help="specify input file",
+        required=True,
+    )
+
+    args = parser.parse_args()
+    main(args.output, args.xml)