summaryrefslogtreecommitdiff
path: root/tools/generate-docs-settings-docs.py
blob: 307be88095276127321279c7590522f5e3c39d59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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)