diff --git a/.gitignore b/.gitignore
index dad1ec51f6..f215e02e96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -218,6 +218,7 @@ valgrind-*.log
/data/server.conf
/cli/src/nmcli
+/cli/src/settings-docs.c
/tui/newt/libnmt-newt.a
/tui/nmtui
diff --git a/cli/src/Makefile.am b/cli/src/Makefile.am
index e61c036898..d30725c5c7 100644
--- a/cli/src/Makefile.am
+++ b/cli/src/Makefile.am
@@ -3,6 +3,7 @@ bin_PROGRAMS = \
AM_CPPFLAGS = \
-I${top_srcdir} \
+ -I${top_builddir} \
-I${top_srcdir}/include \
-I${top_builddir}/include \
-I${top_srcdir}/libnm-util \
@@ -37,4 +38,13 @@ nmcli_LDADD = \
$(top_builddir)/libnm-util/libnm-util.la \
$(top_builddir)/libnm-glib/libnm-glib.la
+if HAVE_INTROSPECTION
+settings-docs.c: settings-docs.xsl $(top_builddir)/libnm-util/nm-setting-docs.xml
+ $(AM_V_GEN) xsltproc --output $@ $^
+BUILT_SOURCES = settings-docs.c
+endif
+
+DISTCLEANFILES = settings-docs.c
+
+EXTRA_DIST = settings-docs.c settings-docs.xsl
diff --git a/cli/src/settings-docs.xsl b/cli/src/settings-docs.xsl
new file mode 100644
index 0000000000..996644bd9e
--- /dev/null
+++ b/cli/src/settings-docs.xsl
@@ -0,0 +1,86 @@
+
+
+
+
+
+ /* Generated file. Do not edit. */
+
+typedef struct {
+ const char *name;
+ const char *docs;
+} NmcPropertyDesc;
+
+
+typedef struct {
+ const char *name;
+ NmcPropertyDesc *properties;
+ int n_properties;
+} NmcSettingDesc;
+
+NmcSettingDesc all_settings[] = {
+
+};
+
+static int
+find_by_name (gconstpointer keyv, gconstpointer cmpv)
+{
+ const char *key = keyv;
+ struct { const char *name; gpointer data; } *cmp = (gpointer)cmpv;
+
+ return strcmp (key, cmp->name);
+}
+
+static const char *
+nmc_setting_get_property_doc (NMSetting *setting, const char *prop)
+{
+ NmcSettingDesc *setting_desc;
+ NmcPropertyDesc *property_desc;
+
+ setting_desc = bsearch (nm_setting_get_name (setting),
+ all_settings, G_N_ELEMENTS (all_settings),
+ sizeof (NmcSettingDesc), find_by_name);
+ if (!setting_desc)
+ return NULL;
+ property_desc = bsearch (prop,
+ setting_desc->properties, setting_desc->n_properties,
+ sizeof (NmcPropertyDesc), find_by_name);
+ if (!property_desc)
+ return NULL;
+ return property_desc->docs;
+}
+
+
+
+NmcPropertyDesc setting_[] = {
+};
+
+
+
+
+
+
+
+
+ { "", "" },
+
+
+ { "", setting_, },
+
+
+
+
+
+ \"
+
+
+
+
+
+
+
+
diff --git a/cli/src/settings.c b/cli/src/settings.c
index 0fc708b352..379ffc185d 100644
--- a/cli/src/settings.c
+++ b/cli/src/settings.c
@@ -21,6 +21,7 @@
#include
#include
+#include
#include
#include
@@ -6367,10 +6368,16 @@ nmc_setting_get_property_allowed_values (NMSetting *setting, const char *prop)
return NULL;
}
+#ifdef HAVE_INTROSPECTION
+#include "settings-docs.c"
+#else
+#define nmc_setting_get_property_doc(setting, prop) "(not available)"
+#endif
+
/*
* Create a description string for a property.
*
- * It returns a description got from properties blurb, concatenated with
+ * It returns a description got from property documentation, concatenated with
* nmcli specific description (if it exists).
*
* Returns: property description or NULL on failure. The caller must free the string.
@@ -6378,9 +6385,8 @@ nmc_setting_get_property_allowed_values (NMSetting *setting, const char *prop)
char *
nmc_setting_get_property_desc (NMSetting *setting, const char *prop)
{
- GParamSpec *spec;
const NmcPropertyFuncs *item;
- const char *setting_desc = "";
+ const char *setting_desc = NULL;
const char *setting_desc_title = "";
const char *nmcli_desc = NULL;
const char *nmcli_desc_title = "";
@@ -6388,11 +6394,9 @@ nmc_setting_get_property_desc (NMSetting *setting, const char *prop)
g_return_val_if_fail (NM_IS_SETTING (setting), FALSE);
- spec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), prop);
- if (spec) {
- setting_desc = g_param_spec_get_blurb (spec);
+ setting_desc = nmc_setting_get_property_doc (setting, prop);
+ if (setting_desc)
setting_desc_title = _("[NM property description]");
- }
item = nmc_properties_find (nm_setting_get_name (setting), prop);
if (item && item->describe_func) {
@@ -6402,7 +6406,8 @@ nmc_setting_get_property_desc (NMSetting *setting, const char *prop)
}
return g_strdup_printf ("%s\n%s\n%s%s%s%s",
- setting_desc_title, setting_desc,
+ setting_desc_title,
+ setting_desc ? setting_desc : "",
nmcli_nl, nmcli_desc_title, nmcli_nl,
nmcli_desc ? nmcli_desc : "");
}
diff --git a/configure.ac b/configure.ac
index 6d1885ea1b..c1f583ebf7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -267,6 +267,9 @@ AC_SUBST(GUDEV_CFLAGS)
AC_SUBST(GUDEV_LIBS)
GOBJECT_INTROSPECTION_CHECK([0.9.6])
+if test -z "$INTROSPECTION_MAKEFILE"; then
+ AC_DEFINE(HAVE_INTROSPECTION, [1], [Define if you have gobject-introspection])
+fi
# Qt4
PKG_CHECK_MODULES(QT, [QtCore >= 4 QtDBus QtNetwork], [have_qt=yes],[have_qt=no])