diff options
author | Florian Müllner <fmuellner@gnome.org> | 2019-11-30 19:52:42 +0100 |
---|---|---|
committer | Florian Müllner <florian.muellner@gmail.com> | 2020-02-10 22:43:00 +0000 |
commit | 224ab2e543a0d1a0df5e6da66e521d02e901bdba (patch) | |
tree | 4e68a04151445c6714a0930c4d7e0bedff89a0ae | |
parent | dee738e24fa55769a20a89ed709bdfaa1b00e1ac (diff) | |
download | gnome-shell-gbsneto/new-lock-screen-part2.tar.gz |
extensions-tool: Add option to list updatesgbsneto/new-lock-screen-part2
Now that we support extension updates, it may be useful to list
pending updates from the command line. It's easy enough to support,
so add a corresponding option to the list command.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/988
-rw-r--r-- | subprojects/extensions-tool/man/gnome-extensions.txt | 3 | ||||
-rw-r--r-- | subprojects/extensions-tool/src/command-list.c | 15 |
2 files changed, 17 insertions, 1 deletions
diff --git a/subprojects/extensions-tool/man/gnome-extensions.txt b/subprojects/extensions-tool/man/gnome-extensions.txt index c04b37174..125c9b82c 100644 --- a/subprojects/extensions-tool/man/gnome-extensions.txt +++ b/subprojects/extensions-tool/man/gnome-extensions.txt @@ -96,6 +96,9 @@ Displays a list of installed extensions. *--prefs*;; Only include extensions with preferences + *--updates*;; + Only include extensions with pending updates + *-d*;; *--details*;; Show some extra information for each extension diff --git a/subprojects/extensions-tool/src/command-list.c b/subprojects/extensions-tool/src/command-list.c index b5cee5923..f92dafa4e 100644 --- a/subprojects/extensions-tool/src/command-list.c +++ b/subprojects/extensions-tool/src/command-list.c @@ -32,7 +32,8 @@ typedef enum { LIST_FLAGS_SYSTEM = 1 << 1, LIST_FLAGS_ENABLED = 1 << 2, LIST_FLAGS_DISABLED = 1 << 3, - LIST_FLAGS_NO_PREFS = 1 << 4 + LIST_FLAGS_NO_PREFS = 1 << 4, + LIST_FLAGS_NO_UPDATES = 1 << 5, } ListFilterFlags; static gboolean @@ -69,11 +70,13 @@ list_extensions (ListFilterFlags filter, DisplayFormat format) g_autoptr (GVariantDict) info = NULL; double type, state; gboolean has_prefs; + gboolean has_update; info = g_variant_dict_new (value); g_variant_dict_lookup (info, "type", "d", &type); g_variant_dict_lookup (info, "state", "d", &state); g_variant_dict_lookup (info, "hasPrefs", "b", &has_prefs); + g_variant_dict_lookup (info, "hasUpdate", "b", &has_update); if (type == TYPE_USER && (filter & LIST_FLAGS_USER) == 0) continue; @@ -90,6 +93,9 @@ list_extensions (ListFilterFlags filter, DisplayFormat format) if (!has_prefs && (filter & LIST_FLAGS_NO_PREFS) == 0) continue; + if (!has_update && (filter & LIST_FLAGS_NO_UPDATES) == 0) + continue; + if (needs_newline) g_print ("\n"); @@ -112,6 +118,7 @@ handle_list (int argc, char *argv[], gboolean do_help) gboolean enabled = FALSE; gboolean disabled = FALSE; gboolean has_prefs = FALSE; + gboolean has_updates = FALSE; GOptionEntry entries[] = { { .long_name = "user", .arg = G_OPTION_ARG_NONE, .arg_data = &user, @@ -128,6 +135,9 @@ handle_list (int argc, char *argv[], gboolean do_help) { .long_name = "prefs", .arg = G_OPTION_ARG_NONE, .arg_data = &has_prefs, .description = _("Show extensions with preferences") }, + { .long_name = "updates", + .arg = G_OPTION_ARG_NONE, .arg_data = &has_updates, + .description = _("Show extensions with updates") }, { .long_name = "details", .short_name = 'd', .arg = G_OPTION_ARG_NONE, .arg_data = &details, .description = _("Print extension details") }, @@ -174,6 +184,9 @@ handle_list (int argc, char *argv[], gboolean do_help) if (!has_prefs) flags |= LIST_FLAGS_NO_PREFS; + if (!has_updates) + flags |= LIST_FLAGS_NO_UPDATES; + return list_extensions (flags, details ? DISPLAY_DETAILED : DISPLAY_ONELINE) ? 0 : 2; } |