summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2017-10-31 14:04:53 +0000
committerRichard Hughes <richard@hughsie.com>2017-10-31 14:04:53 +0000
commita4e5170e4a98ce417edd32ad3a1fe33c559dc3e5 (patch)
tree88a44e65cf23b7f7d419279ab5b9b00eff1c2cca
parent53ca4909421b5397543a09777d3f7ec858cf21e7 (diff)
downloadappstream-glib-wip/hughsie/requires-hardware.tar.gz
Add the 'hardware' requires typewip/hughsie/requires-hardware
-rw-r--r--libappstream-glib/as-require.c4
-rw-r--r--libappstream-glib/as-require.h2
-rw-r--r--libappstream-glib/as-self-test.c8
3 files changed, 13 insertions, 1 deletions
diff --git a/libappstream-glib/as-require.c b/libappstream-glib/as-require.c
index f6a4bd6..66ef88d 100644
--- a/libappstream-glib/as-require.c
+++ b/libappstream-glib/as-require.c
@@ -95,6 +95,8 @@ as_require_kind_from_string (const gchar *kind)
return AS_REQUIRE_KIND_ID;
if (g_strcmp0 (kind, "firmware") == 0)
return AS_REQUIRE_KIND_FIRMWARE;
+ if (g_strcmp0 (kind, "hardware") == 0)
+ return AS_REQUIRE_KIND_HARDWARE;
return AS_REQUIRE_KIND_UNKNOWN;
}
@@ -115,6 +117,8 @@ as_require_kind_to_string (AsRequireKind kind)
return "id";
if (kind == AS_REQUIRE_KIND_FIRMWARE)
return "firmware";
+ if (kind == AS_REQUIRE_KIND_HARDWARE)
+ return "hardware";
return NULL;
}
diff --git a/libappstream-glib/as-require.h b/libappstream-glib/as-require.h
index e13d77e..d3a6b5f 100644
--- a/libappstream-glib/as-require.h
+++ b/libappstream-glib/as-require.h
@@ -52,6 +52,7 @@ struct _AsRequireClass
* @AS_REQUIRE_KIND_UNKNOWN: Type invalid or not known
* @AS_REQUIRE_KIND_ID: Component ID
* @AS_REQUIRE_KIND_FIRMWARE: Device firmware version
+ * @AS_REQUIRE_KIND_HARDWARE: Hardware device, typically a GUID
*
* The require type.
**/
@@ -59,6 +60,7 @@ typedef enum {
AS_REQUIRE_KIND_UNKNOWN,
AS_REQUIRE_KIND_ID,
AS_REQUIRE_KIND_FIRMWARE,
+ AS_REQUIRE_KIND_HARDWARE, /* Since: 0.7.4 */
/*< private >*/
AS_REQUIRE_KIND_LAST
} AsRequireKind;
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index 9d399a6..d05cc52 100644
--- a/libappstream-glib/as-self-test.c
+++ b/libappstream-glib/as-self-test.c
@@ -1346,6 +1346,7 @@ as_test_require_func (void)
"<id>gimp.desktop</id>\n"
"<firmware compare=\"ge\" version=\"0.1.2\">bootloader</firmware>\n"
"<firmware compare=\"eq\" version=\"1.0.0\">runtime</firmware>\n"
+ "<hardware>4be0643f-1d98-573b-97cd-ca98a65347dd</hardware>\n"
"</requires>\n"
"</component>\n";
gboolean ret;
@@ -1370,7 +1371,7 @@ as_test_require_func (void)
/* verify */
requires = as_app_get_requires (app);
- g_assert_cmpint (requires->len, ==, 3);
+ g_assert_cmpint (requires->len, ==, 4);
require = g_ptr_array_index (requires, 0);
g_assert_cmpint (as_require_get_kind (require), ==, AS_REQUIRE_KIND_ID);
g_assert_cmpint (as_require_get_compare (require), ==, AS_REQUIRE_COMPARE_UNKNOWN);
@@ -1381,6 +1382,11 @@ as_test_require_func (void)
g_assert_cmpint (as_require_get_compare (require), ==, AS_REQUIRE_COMPARE_GE);
g_assert_cmpstr (as_require_get_version (require), ==, "0.1.2");
g_assert_cmpstr (as_require_get_value (require), ==, "bootloader");
+ require = g_ptr_array_index (requires, 3);
+ g_assert_cmpint (as_require_get_kind (require), ==, AS_REQUIRE_KIND_HARDWARE);
+ g_assert_cmpint (as_require_get_compare (require), ==, AS_REQUIRE_COMPARE_UNKNOWN);
+ g_assert_cmpstr (as_require_get_version (require), ==, NULL);
+ g_assert_cmpstr (as_require_get_value (require), ==, "4be0643f-1d98-573b-97cd-ca98a65347dd");
/* back to node */
root = as_node_new ();