diff --git a/src/ostree/ot-admin-functions.c b/src/ostree/ot-admin-functions.c index 34e5c6b2..ff623574 100644 --- a/src/ostree/ot-admin-functions.c +++ b/src/ostree/ot-admin-functions.c @@ -48,3 +48,26 @@ ot_admin_require_booted_deployment_or_osname (OstreeSysroot *sysroot, out: return ret; } + +/** + * ot_admin_checksum_version: + * @checksum: A GVariant from an ostree checksum. + * + * + * Get the version metadata string from a commit variant object, if it exists. + * + * Returns: A newly allocated string of the version, or %NULL is none + */ +char * +ot_admin_checksum_version (GVariant *checksum) +{ + gs_unref_variant GVariant *metadata = NULL; + const char *ret = NULL; + + metadata = g_variant_get_child_value (checksum, 0); + + if (!g_variant_lookup (metadata, "version", "&s", &ret)) + return NULL; + + return g_strdup (ret); +} diff --git a/src/ostree/ot-admin-functions.h b/src/ostree/ot-admin-functions.h index ab830369..ea147c84 100644 --- a/src/ostree/ot-admin-functions.h +++ b/src/ostree/ot-admin-functions.h @@ -32,5 +32,9 @@ ot_admin_require_booted_deployment_or_osname (OstreeSysroot *sysroot, const char *osname, GCancellable *cancellable, GError **error); + +char * +ot_admin_checksum_version (GVariant *checksum); + G_END_DECLS