diff --git a/Makefile.am b/Makefile.am index d47df9624e..78144f6ca4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1590,7 +1590,7 @@ libnm/nm-settings-docs-gir.xml: tools/generate-docs-nm-settings-docs-gir.py libn --output $@ man/nm-settings-docs-nmcli.xml: clients/cli/generate-docs-nm-settings-nmcli.xml libnm/nm-property-infos-nmcli.xml libnm/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py - $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,3,$^) + $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py --only-from-first $@ $(wordlist 1,3,$^) man/nm-settings-docs-%.xml: libnm/nm-property-infos-%.xml libnm/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,2,$^) diff --git a/man/meson.build b/man/meson.build index 0be202bae1..1259491ee8 100644 --- a/man/meson.build +++ b/man/meson.build @@ -80,6 +80,7 @@ if enable_introspection python.path(), join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'), '@OUTPUT@', + '--only-from-first', generate_docs_nm_settings_nmcli_xml, nm_property_infos_xml[name], nm_settings_docs_xml_gir, diff --git a/tools/generate-docs-nm-settings-docs-merge.py b/tools/generate-docs-nm-settings-docs-merge.py index 64f899ff17..f749e37543 100755 --- a/tools/generate-docs-nm-settings-docs-merge.py +++ b/tools/generate-docs-nm-settings-docs-merge.py @@ -99,13 +99,25 @@ def node_set_attr(dst_node, name, nodes): ############################################################################### -if len(sys.argv) < 3: - print("%s [OUT_FILE] [SETTING_XML [...]]" % (sys.argv[0])) +gl_only_from_first = False + +argv = list(sys.argv[1:]) +while True: + if argv[0] == '--only-from-first': + gl_only_from_first = True + del argv[0] + continue + break +if len(argv) < 2: + print("%s [--only-from-first] [OUT_FILE] [SETTING_XML [...]]" % (sys.argv[0])) exit(1) -output_xml_file = sys.argv[1] +gl_output_xml_file = argv[0] +gl_input_files = list(argv[1:]) -xml_roots = list([ET.parse(f).getroot() for f in sys.argv[2:]]) +############################################################################### + +xml_roots = list([ET.parse(f).getroot() for f in gl_input_files]) assert(all([root.tag == 'nm-setting-docs' for root in xml_roots])) @@ -117,6 +129,16 @@ for setting_name in iter_keys_of_dicts(settings_roots, key_fcn_setting_name): settings = list([d.get(setting_name) for d in settings_roots]) + if gl_only_from_first \ + and settings[0] is None: + continue + + properties = list([node_to_dict(s, 'property', 'name') for s in settings]) + + if gl_only_from_first \ + and not properties[0]: + continue + setting_node = ET.SubElement(root_node, 'setting') setting_node.set('name', setting_name) @@ -124,12 +146,14 @@ for setting_name in iter_keys_of_dicts(settings_roots, key_fcn_setting_name): node_set_attr(setting_node, 'description', settings) node_set_attr(setting_node, 'name_upper', settings) - properties = list([node_to_dict(s, 'property', 'name') for s in settings]) - for property_name in iter_keys_of_dicts(properties): properties_attrs = list([p.get(property_name) for p in properties]) + if gl_only_from_first \ + and properties_attrs[0] is None: + continue + property_node = ET.SubElement(setting_node, 'property') property_node.set('name', property_name) property_node.set('name_upper', property_name.upper().replace('-', '_')) @@ -143,4 +167,4 @@ for setting_name in iter_keys_of_dicts(settings_roots, key_fcn_setting_name): node_set_attr(property_node, 'default', properties_attrs) node_set_attr(property_node, 'description', properties_attrs) -ET.ElementTree(root_node).write(output_xml_file) +ET.ElementTree(root_node).write(gl_output_xml_file)