summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-06-04 16:53:40 +0200
committerThomas Haller <thaller@redhat.com>2020-06-10 23:56:23 +0200
commitffb598b608add985677df1d5e97fc630b1407f51 (patch)
treebd6c42b8695ac058f90660d36fe1ac844b8a625a
parent5a8c5a2b57f14dd68eb8b392cd775f28cabc3c09 (diff)
downloadNetworkManager-th/nm-settings-manual.tar.gz
docs: generate nm-settings-docs-nmcli.xml based on nmcli meta datath/nm-settings-manual
We have the correct meta-data of supported properties for nmcli. It is in clients/common. Use that for generating the manual page instead of the properties that are part of libnm (some properties may be in libnm but not supported by nmcli, or some properties may not be GObject properties, and not detected as by GObject introspection).
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am44
-rw-r--r--clients/cli/generate-docs-nm-settings-nmcli.c57
-rw-r--r--clients/cli/meson.build44
-rw-r--r--clients/meson.build5
-rw-r--r--man/meson.build3
6 files changed, 139 insertions, 17 deletions
diff --git a/.gitignore b/.gitignore
index 704afc3094..5cb43a0374 100644
--- a/.gitignore
+++ b/.gitignore
@@ -157,6 +157,9 @@ test-*.trs
/libnm/tests/test-remote-settings-client
/libnm/tests/test-secret-agent
+/clients/cli/generate-docs-nm-settings-nmcli
+/clients/cli/generate-docs-nm-settings-nmcli.xml
+
/m4/codeset.m4
/m4/gettext.m4
/m4/glibc2.m4
diff --git a/Makefile.am b/Makefile.am
index ac40aee84a..d47df9624e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1559,6 +1559,7 @@ libnm/libnm.typelib: libnm/libnm.gir
INTROSPECTION_GIRS += libnm/NM-1.0.gir
libnm_noinst_data = \
+ clients/cli/generate-docs-nm-settings-nmcli.xml \
libnm/nm-property-infos-dbus.xml \
libnm/nm-property-infos-ifcfg-rh.xml \
libnm/nm-property-infos-keyfile.xml \
@@ -1570,6 +1571,9 @@ libnm_noinst_data = \
noinst_DATA += $(libnm_noinst_data)
+clients/cli/generate-docs-nm-settings-nmcli.xml: clients/cli/generate-docs-nm-settings-nmcli
+ $(AM_V_GEN) clients/cli/generate-docs-nm-settings-nmcli > $@
+
libnm_docs_sources = $(libnm_core_lib_c_settings_real)
libnm/nm-property-infos-%.xml: tools/generate-docs-nm-property-infos.pl $(libnm_docs_sources)
@@ -1585,6 +1589,9 @@ libnm/nm-settings-docs-gir.xml: tools/generate-docs-nm-settings-docs-gir.py libn
--gir $(builddir)/libnm/NM-1.0.gir \
--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,$^)
+
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,$^)
@@ -4559,6 +4566,43 @@ uninstall_hook += uninstall-hook-nmcli
endif
+###############################################################################
+
+noinst_PROGRAMS += clients/cli/generate-docs-nm-settings-nmcli
+
+clients_cli_generate_docs_nm_settings_nmcli_SOURCES = \
+ clients/cli/generate-docs-nm-settings-nmcli.c \
+ $(NULL)
+
+clients_cli_generate_docs_nm_settings_nmcli_CPPFLAGS = \
+ -I$(srcdir)/clients/common \
+ $(clients_cppflags) \
+ -DG_LOG_DOMAIN=\""nmcli"\" \
+ $(NULL)
+
+clients_cli_generate_docs_nm_settings_nmcli_LDADD = \
+ clients/common/libnmc.la \
+ clients/common/libnmc-base.la \
+ libnm/nm-libnm-aux/libnm-libnm-aux.la \
+ libnm-core/nm-libnm-core-aux/libnm-libnm-core-aux.la \
+ libnm-core/nm-libnm-core-intern/libnm-libnm-core-intern.la \
+ libnm/libnm.la \
+ shared/nm-glib-aux/libnm-glib-aux.la \
+ shared/nm-std-aux/libnm-std-aux.la \
+ shared/libcsiphash.la \
+ $(GLIB_LIBS) \
+ $(NULL)
+
+clients_cli_generate_docs_nm_settings_nmcli_LDFLAGS = \
+ -Wl,--version-script="$(srcdir)/linker-script-binary.ver" \
+ $(SANITIZER_EXEC_LDFLAGS) \
+ $(NULL)
+
+$(clients_cli_generate_docs_nm_settings_nmcli_OBJECTS): $(libnm_core_lib_h_pub_mkenums)
+$(clients_cli_generate_docs_nm_settings_nmcli_OBJECTS): $(libnm_lib_h_pub_mkenums)
+
+###############################################################################
+
EXTRA_DIST += \
clients/cli/nmcli-completion \
clients/cli/meson.build \
diff --git a/clients/cli/generate-docs-nm-settings-nmcli.c b/clients/cli/generate-docs-nm-settings-nmcli.c
new file mode 100644
index 0000000000..8ae5b13e49
--- /dev/null
+++ b/clients/cli/generate-docs-nm-settings-nmcli.c
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: LGPL-2.1+
+
+#include "nm-default.h"
+
+#include "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 *tmp1 = NULL;
+
+ g_print ("%s<setting", _indent_level (INDENT));
+ g_print (" name=%s >\n", tmp1 = _xml_escape_attribute (sett_info->general->setting_name));
+
+ 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;
+
+ 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));
+ g_print (" />\n");
+ }
+
+ g_print ("%s</setting>\n", _indent_level (INDENT));
+ }
+ g_print ("</nm-setting-docs>\n");
+ return 0;
+}
diff --git a/clients/cli/meson.build b/clients/cli/meson.build
index 8dd05affcc..517deffa69 100644
--- a/clients/cli/meson.build
+++ b/clients/cli/meson.build
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: LGPL-2.1+
-name = 'nmcli'
+if enable_nmcli
# FIXME: nmcli-completion should be renamed to nmcli
install_data(
@@ -8,15 +8,8 @@ install_data(
install_dir: join_paths(nm_datadir, 'bash-completion', 'completions'),
)
-deps = [
- libnmc_base_dep,
- libnmc_dep,
- readline_dep,
- libnm_libnm_aux_dep,
-]
-
executable(
- name,
+ 'nmcli',
files(
'agent.c',
'common.c',
@@ -28,9 +21,38 @@ executable(
'settings.c',
'utils.c',
),
- dependencies: deps,
- c_args: clients_c_flags + ['-DG_LOG_DOMAIN="@0@"'.format(name)],
+ dependencies: [
+ libnmc_base_dep,
+ libnmc_dep,
+ readline_dep,
+ libnm_libnm_aux_dep,
+ ],
+ c_args: clients_c_flags + ['-DG_LOG_DOMAIN="@0@"'.format('nmcli')],
link_args: ldflags_linker_script_binary,
link_depends: linker_script_binary,
install: true,
)
+
+endif
+
+generate_docs_nm_settings_nmcli = executable(
+ 'generate-docs-nm-settings-nmcli',
+ files(
+ 'generate-docs-nm-settings-nmcli.c',
+ ),
+ dependencies: [
+ libnmc_base_dep,
+ libnmc_dep,
+ libnm_libnm_aux_dep,
+ ],
+ c_args: clients_c_flags + ['-DG_LOG_DOMAIN="@0@"'.format('nmcli')],
+ link_args: ldflags_linker_script_binary,
+ link_depends: linker_script_binary,
+)
+
+generate_docs_nm_settings_nmcli_xml = custom_target(
+ 'generate-docs-nm-settings-nmcli.xml',
+ output: 'generate-docs-nm-settings-nmcli.xml',
+ command: [ generate_docs_nm_settings_nmcli ],
+ capture: true,
+)
diff --git a/clients/meson.build b/clients/meson.build
index 5e6dd6a4c8..8d0ece7592 100644
--- a/clients/meson.build
+++ b/clients/meson.build
@@ -19,10 +19,7 @@ executable(
)
subdir('common')
-
-if enable_nmcli
- subdir('cli')
-endif
+subdir('cli')
if enable_nmtui
subdir('tui')
diff --git a/man/meson.build b/man/meson.build
index 5e76a9f1be..0be202bae1 100644
--- a/man/meson.build
+++ b/man/meson.build
@@ -69,7 +69,6 @@ if enable_introspection
nm_property_infos_xml[name],
nm_settings_docs_xml_gir,
],
- depends: libnm_gir,
)
name = 'nmcli'
@@ -81,10 +80,10 @@ if enable_introspection
python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'),
'@OUTPUT@',
+ generate_docs_nm_settings_nmcli_xml,
nm_property_infos_xml[name],
nm_settings_docs_xml_gir,
],
- depends: libnm_gir,
)
nm_settings_docs_xml = {