about summary refs log tree commit diff
path: root/src/nmcli/gen-metadata-nm-settings-nmcli.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nmcli/gen-metadata-nm-settings-nmcli.c')
-rw-r--r--src/nmcli/gen-metadata-nm-settings-nmcli.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.c b/src/nmcli/gen-metadata-nm-settings-nmcli.c
new file mode 100644
index 00000000..196e4d35
--- /dev/null
+++ b/src/nmcli/gen-metadata-nm-settings-nmcli.c
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "libnm-client-aux-extern/nm-default-client.h"
+
+#include "libnmc-setting/nm-meta-setting-desc.h"
+
+#define INDENT 4
+
+static char *
+_xml_escape_attribute(const char *value)
+{
+    gs_free char *s = NULL;
+
+    s = g_markup_escape_text(value, -1);
+    return g_strdup_printf("\"%s\"", s);
+}
+
+static const char *
+_indent_level(guint num_spaces)
+{
+    static const char spaces[] = "                      ";
+
+    nm_assert(num_spaces < G_N_ELEMENTS(spaces));
+    return &spaces[G_N_ELEMENTS(spaces) - num_spaces - 1];
+}
+
+int
+main(int argc, char *argv[])
+{
+    int i_sett_infos;
+    int i_property;
+
+    g_print("<nm-setting-docs>\n");
+    for (i_sett_infos = 0; i_sett_infos < G_N_ELEMENTS(nm_meta_setting_infos_editor);
+         i_sett_infos++) {
+        const NMMetaSettingInfoEditor *sett_info = &nm_meta_setting_infos_editor[i_sett_infos];
+        gs_free char                  *tmp_s1    = NULL;
+        gs_free char                  *tmp_s2    = NULL;
+
+        g_print("%s<setting", _indent_level(INDENT));
+        g_print(" name=%s", tmp_s1 = _xml_escape_attribute(sett_info->general->setting_name));
+        if (sett_info->alias)
+            g_print("\n%salias=%s",
+                    _indent_level(INDENT + 9),
+                    tmp_s2 = _xml_escape_attribute(sett_info->alias));
+        g_print(" >\n");
+
+        for (i_property = 0; i_property < sett_info->properties_num; i_property++) {
+            const NMMetaPropertyInfo *prop_info = sett_info->properties[i_property];
+            gs_free char             *tmp2      = NULL;
+            gs_free char             *tmp3      = NULL;
+            gs_free char             *tmp4      = NULL;
+
+            g_print("%s<property", _indent_level(2 * INDENT));
+            g_print(" name=%s", tmp2 = _xml_escape_attribute(prop_info->property_name));
+            if (prop_info->property_alias)
+                g_print("\n%salias=%s",
+                        _indent_level(2 * INDENT + 10),
+                        tmp3 = _xml_escape_attribute(prop_info->property_alias));
+            if (prop_info->describe_doc)
+                g_print("\n%sdescription=%s",
+                        _indent_level(2 * INDENT + 10),
+                        tmp4 = _xml_escape_attribute(prop_info->describe_doc));
+            g_print(" />\n");
+        }
+
+        g_print("%s</setting>\n", _indent_level(INDENT));
+    }
+    g_print("</nm-setting-docs>\n");
+    return 0;
+}