diff --git a/man/ostree-admin-status.xml b/man/ostree-admin-status.xml index dde099b00d..cc90312c91 100644 --- a/man/ostree-admin-status.xml +++ b/man/ostree-admin-status.xml @@ -61,6 +61,65 @@ License along with this library. If not, see . + + Options + + + + ="PATH" + + + Create a new OSTree sysroot at PATH + + + + + + + + Print the commit verification status + + + + + + + + Skip signatures in output + + + + + + + + Output the string default if the default deployment + is the booted one, not-default if we are booted in + a non-default deployment (e.g. the user interactively chose a + different entry in the bootloader menu, or the bootloader rolled back + automatically, etc.). If we are not in a booted OSTree system, an + error is returned. + + + + + + + + Print debug information during command processing + + + + + --version + + + Print version information and exit + + + + + Example $ ostree admin status diff --git a/src/ostree/ot-admin-builtin-status.c b/src/ostree/ot-admin-builtin-status.c index bf94843f26..e867cb8667 100644 --- a/src/ostree/ot-admin-builtin-status.c +++ b/src/ostree/ot-admin-builtin-status.c @@ -30,13 +30,21 @@ static gboolean opt_verify; static gboolean opt_skip_signatures; - -static GOptionEntry options[] - = { { "verify", 'V', 0, G_OPTION_ARG_NONE, &opt_verify, "Print the commit verification status", - NULL }, - { "skip-signatures", 'S', 0, G_OPTION_ARG_NONE, &opt_skip_signatures, - "Print the commit verification status", NULL }, - { NULL } }; +static gboolean opt_query_booted; + +static GOptionEntry options[] = { + { "verify", 'V', 0, G_OPTION_ARG_NONE, &opt_verify, "Print the commit verification status", + NULL }, + { "skip-signatures", 'S', 0, G_OPTION_ARG_NONE, &opt_skip_signatures, "Skip signatures in output", + NULL }, + { "query-booted", 'Q', 0, G_OPTION_ARG_NONE, &opt_query_booted, + "Output the string \"default\" if the default deployment is the booted one, \"not-default\" if " + "we are booted in a non-default deployment (e.g. the user interactively chose a different " + "entry in the bootloader menu, or the bootloader rolled back automatically, etc.). If we are " + "not in a booted OSTree system, an error is returned.", + NULL }, + { NULL } +}; static gboolean deployment_print_status (OstreeSysroot *sysroot, OstreeRepo *repo, OstreeDeployment *deployment, gboolean is_booted, gboolean is_pending, gboolean is_rollback, @@ -200,7 +208,15 @@ ot_admin_builtin_status (int argc, char **argv, OstreeCommandInvocation *invocat if (booted_deployment) ostree_sysroot_query_deployments_for (sysroot, NULL, &pending_deployment, &rollback_deployment); - if (deployments->len == 0) + if (opt_query_booted) + { + if (deployments->len == 0) + return glnx_throw (error, "Not in a booted OSTree system"); + + const gboolean is_default_booted = deployments->pdata[0] == booted_deployment; + g_print ("%s\n", is_default_booted ? "default" : "not-default"); + } + else if (deployments->len == 0) { g_print ("No deployments.\n"); }