docs: generate nm-settings-docs-nmcli.xml based on nmcli meta data
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).
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -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
|
||||
|
44
Makefile.am
44
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 \
|
||||
|
57
clients/cli/generate-docs-nm-settings-nmcli.c
Normal file
57
clients/cli/generate-docs-nm-settings-nmcli.c
Normal file
@@ -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;
|
||||
}
|
@@ -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,
|
||||
)
|
||||
|
@@ -19,10 +19,7 @@ executable(
|
||||
)
|
||||
|
||||
subdir('common')
|
||||
|
||||
if enable_nmcli
|
||||
subdir('cli')
|
||||
endif
|
||||
subdir('cli')
|
||||
|
||||
if enable_nmtui
|
||||
subdir('tui')
|
||||
|
@@ -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 = {
|
||||
|
Reference in New Issue
Block a user