summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2019-11-30 19:52:42 +0100
committerFlorian Müllner <florian.muellner@gmail.com>2020-02-10 22:43:00 +0000
commit224ab2e543a0d1a0df5e6da66e521d02e901bdba (patch)
tree4e68a04151445c6714a0930c4d7e0bedff89a0ae
parentdee738e24fa55769a20a89ed709bdfaa1b00e1ac (diff)
downloadgnome-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.txt3
-rw-r--r--subprojects/extensions-tool/src/command-list.c15
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;
}