extensions-tool: Add common option to silence errors

Error reporting is useful when used interactively, but often undesirable
when used in scripts. Account for that with a common --quiet option,
which is more convenient than redirection stderr to /dev/null.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
This commit is contained in:
Florian Müllner 2020-03-14 12:58:04 +01:00
parent fbd6beea2c
commit f5a170ce46
13 changed files with 53 additions and 0 deletions

View File

@ -42,6 +42,13 @@ DESCRIPTION
*gnome-extensions* is a utility that makes some common GNOME extensions
operations available on the command line.
COMMON OPTIONS
--------------
All commands except for *help* and *version* handle the following options:
*--quiet*, *-q*::
Do not print error messages
COMMANDS
--------
*help* ['COMMAND']::

View File

@ -262,6 +262,7 @@ handle_create (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Create a new extension"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group ());
if (do_help)
{

View File

@ -56,6 +56,7 @@ handle_disable (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Disable an extension"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -56,6 +56,7 @@ handle_enable (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Enable an extension"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -78,6 +78,7 @@ handle_info (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Show extensions info"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -183,6 +183,7 @@ handle_install (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Install an extension bundle"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -150,6 +150,7 @@ handle_list (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("List installed extensions"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -480,6 +480,7 @@ handle_pack (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Create an extension bundle"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -89,6 +89,7 @@ handle_prefs (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Opens extension preferences"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -1,4 +1,5 @@
/* command-reset.c
g_option_context_add_group (context, get_option_group());
*
* Copyright 2019 Florian Müllner <fmuellner@gnome.org>
*
@ -56,6 +57,7 @@ handle_reset (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Reset an extension"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -71,6 +71,7 @@ handle_uninstall (int argc, char *argv[], gboolean do_help)
g_option_context_set_help_enabled (context, FALSE);
g_option_context_set_summary (context, _("Uninstall an extension"));
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, get_option_group());
if (do_help)
{

View File

@ -45,6 +45,8 @@ typedef enum {
DISPLAY_DETAILED
} DisplayFormat;
GOptionGroup *get_option_group (void);
void show_help (GOptionContext *context,
const char *message);

View File

@ -49,6 +49,39 @@ extension_state_to_string (ExtensionState state)
return "UNKNOWN";
}
static void
print_nothing (const char *message)
{
}
static gboolean
quiet_cb (const gchar *option_name,
const gchar *value,
gpointer data,
GError **error)
{
g_set_printerr_handler (print_nothing);
return TRUE;
}
GOptionGroup *
get_option_group ()
{
GOptionEntry entries[] = {
{ .long_name = "quiet", .short_name = 'q',
.description = _("Do not print error messages"),
.arg = G_OPTION_ARG_CALLBACK, .arg_data = &quiet_cb,
.flags = G_OPTION_FLAG_NO_ARG | G_OPTION_FLAG_IN_MAIN },
{ NULL }
};
GOptionGroup *group;
group = g_option_group_new ("Common", "common options", "common options", NULL, NULL);
g_option_group_add_entries (group, entries);
return group;
}
void
show_help (GOptionContext *context, const char *message)
{