diff options
author | Thomas Haller <thaller@redhat.com> | 2021-05-18 15:59:52 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-05-18 16:00:25 +0200 |
commit | c34e36bb8d285123f8a18219f707cef0d90d5c53 (patch) | |
tree | 3eff912fb338a634a1b89eb3edb4db6091262a34 /tools | |
parent | 890eda4db81da67e67556ab98ad9fe6802dbf0df (diff) | |
download | NetworkManager-c34e36bb8d285123f8a18219f707cef0d90d5c53.tar.gz |
Revert "Rewrite `./tools/generate-docs-nm-property-infos.py` with XML library"
This breaks build on RHEL7, probably due to an older python version.
Revert for now.
This reverts commit a83fb33840baba6da0e75eb5489a63bf3ea39d0d.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/generate-docs-nm-property-infos.py | 74 |
1 files changed, 38 insertions, 36 deletions
diff --git a/tools/generate-docs-nm-property-infos.py b/tools/generate-docs-nm-property-infos.py index 58764af37a..7286da8f20 100755 --- a/tools/generate-docs-nm-property-infos.py +++ b/tools/generate-docs-nm-property-infos.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: LGPL-2.1-or-later import os, re, sys -import xml.etree.ElementTree as ET def get_setting_name(one_file): @@ -27,7 +26,7 @@ def get_setting_name(one_file): return setting_name -def scan_doc_comments(plugin, setting_node, file, start_tag, end_tag): +def scan_doc_comments(plugin, outfile, file, start_tag, end_tag): data = [] push_flag = 0 try: @@ -44,7 +43,7 @@ def scan_doc_comments(plugin, setting_node, file, start_tag, end_tag): push_flag = 0 parsed_data = process_data(data) if parsed_data: - write_data(setting_node, parsed_data) + write_data(outfile, parsed_data) data = [] elif push_flag == 1: data.append(line) @@ -76,14 +75,14 @@ def process_data(data): if kwd_first_line_found: keyword = kwd_first_line_found.group(1) value = kwd_first_line_found.group(2) + " " - parsed_data[keyword] = value + parsed_data[keyword] = escape_xml_char(value) elif kwd_more_line_found: if not keyword: print("Extra mess in a comment: %s" % (line)) exit(1) else: value = kwd_more_line_found.group(1) + " " - parsed_data[keyword] += value + parsed_data[keyword] += escape_xml_char(value) for keyword in keywords: if keyword == "variable" and keyword not in parsed_data: parsed_data[keyword] = parsed_data["property"] @@ -94,30 +93,27 @@ def process_data(data): return parsed_data -def write_data(setting_node, parsed_data): - property_node = ET.SubElement(setting_node, "property") - property_node.set("name", parsed_data["property"]) - property_node.set("variable", parsed_data["variable"]) - property_node.set("format", parsed_data["format"]) - property_node.set("values", parsed_data["values"]) - property_node.set("default", parsed_data["default"]) - property_node.set("example", parsed_data["example"]) - property_node.set("description", parsed_data["description"]) - - -def pretty_xml(element, newline, level=0): - if element: - if (element.text is None) or element.text.isspace(): - element.text = newline - else: - element.text = newline + element.text.strip() + newline - temp = list(element) - for subelement in temp: - if temp.index(subelement) < (len(temp) - 1): - subelement.tail = newline - else: - subelement.tail = newline - pretty_xml(subelement, newline, level=level + 1) +def write_data(outfile, parsed_data): + outfile.write( + '<property name="{0}" variable="{1}" format="{2}" values="{3}" default="{4}" example="{5}" description="{6}"></property>\n'.format( + parsed_data["property"], + parsed_data["variable"], + parsed_data["format"], + parsed_data["values"], + parsed_data["default"], + parsed_data["example"], + parsed_data["description"], + ) + ) + + +def escape_xml_char(text): + text = text.replace("&", "&") + text = text.replace("<", "<") + text = text.replace(">", ">") + text = text.replace('"', """) + + return text if len(sys.argv) < 4: @@ -128,16 +124,22 @@ argv = list(sys.argv[1:]) plugin, output, source_files = argv[0], argv[1], argv[2:] start_tag = "---" + plugin + "---" end_tag = "---end---" -root_node = ET.Element("nm-setting-docs") +outfile = open(output, mode="w") + +# write XML header +outfile.write("<nm-setting-docs>\n") +outfile.write(" ") for one_file in source_files: setting_name = get_setting_name(one_file) if setting_name: - setting_node = ET.SubElement(root_node, "setting", name=setting_name) - setting_node.text = "\n" - scan_doc_comments(plugin, setting_node, one_file, start_tag, end_tag) + outfile.write('<setting name="' + setting_name + '">\n') + scan_doc_comments(plugin, outfile, one_file, start_tag, end_tag) + outfile.write("</setting>\n") + -pretty_xml(root_node, "\n") -root_node.text = "\n " +# write XML footer +outfile.write("</nm-setting-docs>") -ET.ElementTree(root_node).write(output, short_empty_elements=False) +# close output file +outfile.close() |