From 81a484459a0110799c58dbd2d799db8f08309b23 Mon Sep 17 00:00:00 2001 From: James Antill Date: Wed, 22 Oct 2014 01:59:36 -0400 Subject: [PATCH] admin status: Print the version --- src/ostree/ot-admin-builtin-status.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/ostree/ot-admin-builtin-status.c b/src/ostree/ot-admin-builtin-status.c index 1f7801f5..9ce2f433 100644 --- a/src/ostree/ot-admin-builtin-status.c +++ b/src/ostree/ot-admin-builtin-status.c @@ -33,11 +33,27 @@ static GOptionEntry options[] = { { NULL } }; +static char * +version_of_commit (OstreeRepo *repo, const char *checksum) +{ + gs_unref_variant GVariant *variant = NULL; + + /* Shouldn't fail, but if it does, we ignore it */ + if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_COMMIT, checksum, + &variant, NULL)) + goto out; + + return ot_admin_checksum_version (variant); + out: + return NULL; +} + gboolean ot_admin_builtin_status (int argc, char **argv, OstreeSysroot *sysroot, GCancellable *cancellable, GError **error) { GOptionContext *context; gboolean ret = FALSE; + gs_unref_object OstreeRepo *repo = NULL; OstreeDeployment *booted_deployment = NULL; gs_unref_ptrarray GPtrArray *deployments = NULL; guint i; @@ -52,6 +68,9 @@ ot_admin_builtin_status (int argc, char **argv, OstreeSysroot *sysroot, GCancell if (!ostree_sysroot_load (sysroot, cancellable, error)) goto out; + if (!ostree_sysroot_get_repo (sysroot, &repo, cancellable, error)) + goto out; + deployments = ostree_sysroot_get_deployments (sysroot); booted_deployment = ostree_sysroot_get_booted_deployment (sysroot); @@ -65,12 +84,16 @@ ot_admin_builtin_status (int argc, char **argv, OstreeSysroot *sysroot, GCancell { OstreeDeployment *deployment = deployments->pdata[i]; GKeyFile *origin; + const char *ref = ostree_deployment_get_csum (deployment); + gs_free gchar *version = version_of_commit (repo, ref); g_print ("%c %s %s.%d\n", deployment == booted_deployment ? '*' : ' ', ostree_deployment_get_osname (deployment), ostree_deployment_get_csum (deployment), ostree_deployment_get_deployserial (deployment)); + if (version) + g_print (" Version: %s\n", version); origin = ostree_deployment_get_origin (deployment); if (!origin) g_print (" origin: none\n");