diff options
author | Thomas Haller <thaller@redhat.com> | 2020-06-04 16:53:40 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-06-09 17:06:41 +0200 |
commit | de136fa974202fcdfa9f7269f9573995fb816e59 (patch) | |
tree | b9e724a50c806dadb34f1fbb77dff9fe9654275c | |
parent | e7752b2b9bdeaedd533cf3fcaa9f0a0e37b410be (diff) | |
download | NetworkManager-th/nm-settings-manual-1.tar.gz |
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile.am | 44 | ||||
-rw-r--r-- | clients/cli/generate-docs-nm-settings-nmcli.c | 57 | ||||
-rw-r--r-- | clients/cli/meson.build | 38 | ||||
-rw-r--r-- | clients/meson.build | 4 | ||||
-rw-r--r-- | libnm/meson.build | 15 |
6 files changed, 143 insertions, 18 deletions
diff --git a/.gitignore b/.gitignore index dec2a8ed46..fc9c203504 100644 --- a/.gitignore +++ b/.gitignore @@ -159,6 +159,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 031bd9f12c..f869ed3fa3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1553,6 +1553,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 \ @@ -1564,6 +1565,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: libnm/generate-docs-nm-property-infos.pl $(libnm_docs_sources) @@ -1579,6 +1583,9 @@ libnm/nm-settings-docs-gir.xml: libnm/generate-docs-nm-settings-docs-gir.py libn --gir $(builddir)/libnm/NM-1.0.gir \ --output $@ +libnm/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 libnm/generate-docs-nm-settings-docs-merge.py + $(AM_V_GEN) "$(PYTHON)" $(srcdir)/libnm/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,3,$^) + libnm/nm-settings-docs-%.xml: libnm/nm-property-infos-%.xml libnm/nm-settings-docs-gir.xml libnm/generate-docs-nm-settings-docs-merge.py $(AM_V_GEN) "$(PYTHON)" $(srcdir)/libnm/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,2,$^) @@ -4553,6 +4560,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 \ + shared/nm-libnm-core-aux/libnm-libnm-core-aux.la \ + shared/nm-libnm-core-intern/libnm-libnm-core-intern.la \ + shared/nm-glib-aux/libnm-glib-aux.la \ + shared/nm-std-aux/libnm-std-aux.la \ + shared/libcsiphash.la \ + shared/nm-libnm-aux/libnm-libnm-aux.la \ + libnm/libnm.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..76596e9bd7 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,32 @@ 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 + +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, +) diff --git a/clients/meson.build b/clients/meson.build index 5e6dd6a4c8..3bd406f128 100644 --- a/clients/meson.build +++ b/clients/meson.build @@ -20,9 +20,7 @@ executable( subdir('common') -if enable_nmcli - subdir('cli') -endif +subdir('cli') if enable_nmtui subdir('tui') diff --git a/libnm/meson.build b/libnm/meson.build index b0d4e9f876..9b69ebe5ba 100644 --- a/libnm/meson.build +++ b/libnm/meson.build @@ -293,17 +293,24 @@ if enable_introspection ) foreach name: ['dbus', 'nmcli'] + cmdline_args = [ + nm_property_infos_xml[name], + nm_settings_docs_xml_gir, + ] + extra_input = [ ] + if name == 'nmcli' + extra_input = [ generate_docs_nm_settings_nmcli_xml ] + cmdline_args = [ generate_docs_nm_settings_nmcli_xml ] + cmdnline_args + endif t = custom_target( 'nm-settings-docs-' + name + '.xml', - input: [nm_settings_docs_xml_gir, nm_property_infos_xml[name]], + input: extra_input + [nm_settings_docs_xml_gir, nm_property_infos_xml[name]], output: 'nm-settings-docs-' + name + '.xml', command: [ python.path(), join_paths(meson.current_source_dir(), 'generate-docs-nm-settings-docs-merge.py'), '@OUTPUT@', - nm_property_infos_xml[name], - nm_settings_docs_xml_gir, - ], + ] + cmdline_args, depends: libnm_gir, ) if name == 'dbus' |