[packagekit] packagekit: Branch 'master' - 4 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Mon Oct 15 12:25:06 PDT 2007
backends/dummy/pk-backend-dummy.c | 14 +++
client/pk-console.c | 140 +++++++++++++++++++++-----------------
client/pk-monitor.c | 25 ++++++
3 files changed, 119 insertions(+), 60 deletions(-)
New commits:
commit 9dec28da8f0e2502b81cc64f4b2d0966d5739709
Author: James Bowes <jbowes at dangerouslyinc.com>
Date: Sat Oct 13 23:26:15 2007 -0400
pkcon: Use GOption for --verbose, --version and usage display
diff --git a/client/pk-console.c b/client/pk-console.c
index 92ab2b5..57645f9 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -152,39 +152,32 @@ pk_console_percentage_changed_cb (PkClient *client, guint percentage, gpointer d
g_print ("%i%%\n", percentage);
}
-/**
- * pk_console_usage:
- **/
-static void
-pk_console_usage (const gchar *error)
-{
- if (error != NULL) {
- g_print ("Error: %s\n", error);
- }
- g_print ("usage:\n");
- g_print (" pkcon [verbose] search name|details|group|file data\n");
- g_print (" pkcon [verbose] install <package_id>\n");
- g_print (" pkcon [verbose] remove <package_id>\n");
- g_print (" pkcon [verbose] update <package_id>\n");
- g_print (" pkcon [verbose] refresh\n");
- g_print (" pkcon [verbose] resolve\n");
- g_print (" pkcon [verbose] force-refresh\n");
- g_print (" pkcon [verbose] update-system\n");
- g_print (" pkcon [verbose] get updates\n");
- g_print (" pkcon [verbose] get depends <package_id>\n");
- g_print (" pkcon [verbose] get requires <package_id>\n");
- g_print (" pkcon [verbose] get description <package_id>\n");
- g_print (" pkcon [verbose] get updatedetail <package_id>\n");
- g_print (" pkcon [verbose] get actions\n");
- g_print (" pkcon [verbose] get groups\n");
- g_print (" pkcon [verbose] get filters\n");
- g_print (" pkcon [verbose] get transactions\n");
- g_print (" pkcon [verbose] get repos\n");
- g_print (" pkcon [verbose] enable-repo <repo_id>\n");
- g_print (" pkcon [verbose] disable-repo <repo_id>\n");
- g_print ("\n");
- g_print (" package_id is typically gimp;2:2.4.0-0.rc1.1.fc8;i386;development\n");
-}
+gchar *summary =
+ "PackageKit Console Interface\n"
+ "\n"
+ "Subcommands:\n"
+ " search name|details|group|file data\n"
+ " install <package_id>\n"
+ " remove <package_id>\n"
+ " update <package_id>\n"
+ " refresh\n"
+ " resolve\n"
+ " force-refresh\n"
+ " update-system\n"
+ " get updates\n"
+ " get depends <package_id>\n"
+ " get requires <package_id>\n"
+ " get description <package_id>\n"
+ " get updatedetail <package_id>\n"
+ " get actions\n"
+ " get groups\n"
+ " get filters\n"
+ " get transactions\n"
+ " get repos\n"
+ " enable-repo <repo_id>\n"
+ " disable-repo <repo_id>\n"
+ "\n"
+ " package_id is typically gimp;2:2.4.0-0.rc1.1.fc8;i386;development";
/**
* pk_client_wait:
@@ -400,10 +393,6 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array, GError *
} else {
g_set_error (error, 0, 0, "invalid get type");
}
- } else if (strcmp (mode, "debug") == 0) {
- pk_debug_init (TRUE);
- } else if (strcmp (mode, "verbose") == 0) {
- pk_debug_init (TRUE);
} else if (strcmp (mode, "update-system") == 0) {
pk_client_update_system (client);
} else if (strcmp (mode, "refresh") == 0) {
@@ -496,6 +485,18 @@ main (int argc, char *argv[])
PkClient *client;
GPtrArray *array;
guint i;
+ gboolean verbose = FALSE;
+ gboolean program_version = FALSE;
+ GOptionContext *context;
+ gchar *options_help;
+
+ const GOptionEntry options[] = {
+ { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
+ "Show extra debugging information", NULL },
+ { "version", '\0', 0, G_OPTION_ARG_NONE, &program_version,
+ "Show the program version and exit", NULL},
+ { NULL}
+ };
if (! g_thread_supported ()) {
g_thread_init (NULL);
@@ -511,8 +512,23 @@ main (int argc, char *argv[])
g_error ("This program cannot start until you start the dbus system service.");
}
+ context = g_option_context_new (_("SUBCOMMAND"));
+ g_option_context_set_summary (context, summary) ;
+ g_option_context_add_main_entries (context, options, NULL);
+ g_option_context_parse (context, &argc, &argv, NULL);
+ /* Save the usage string in case command parsing fails. */
+ options_help = g_option_context_get_help (context, TRUE, NULL);
+ g_option_context_free (context);
+
+ if (program_version == TRUE) {
+ g_print (VERSION "\n");
+ return 0;
+ }
+
+ pk_debug_init (verbose);
+
if (argc < 2) {
- pk_console_usage (NULL);
+ g_print (options_help);
return 1;
}
@@ -545,11 +561,13 @@ main (int argc, char *argv[])
while (array->len > 0) {
pk_console_parse_multiple_commands (client, array, &error);
if (error != NULL) {
- pk_console_usage (error->message);
+ g_print ("Error:\n %s\n\n", error->message);
g_error_free (error);
+ g_print (options_help);
}
}
+ g_free (options_help);
g_ptr_array_free (array, TRUE);
g_object_unref (client);
commit 402f31c3e8929bc78551ebae1e594dc6bcd4546c
Author: James Bowes <jbowes at dangerouslyinc.com>
Date: Sun Oct 14 11:02:22 2007 -0400
pkcon: change parse_multiple_options to use a GError rather than calling usage.
diff --git a/client/pk-console.c b/client/pk-console.c
index 5a0f008..92ab2b5 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -202,7 +202,7 @@ pk_client_wait (void)
* pk_console_parse_multiple_commands:
**/
static void
-pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
+pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array, GError **error)
{
const gchar *mode;
const gchar *value = NULL;
@@ -221,12 +221,12 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
if (strcmp (mode, "search") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a search type");
+ g_set_error (error, 0, 0, "you need to specify a search type");
remove = 1;
goto out;
} else if (strcmp (value, "name") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -236,7 +236,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "details") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -246,7 +246,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "group") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -256,7 +256,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "file") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -265,11 +265,11 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
remove = 3;
}
} else {
- pk_console_usage ("invalid search type");
+ g_set_error (error, 0, 0, "invalid search type");
}
} else if (strcmp (mode, "install") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a package to install");
+ g_set_error (error, 0, 0, "you need to specify a package to install");
remove = 1;
goto out;
} else {
@@ -279,7 +279,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "remove") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a package to remove");
+ g_set_error (error, 0, 0, "you need to specify a package to remove");
remove = 1;
goto out;
} else {
@@ -289,7 +289,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "update") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a package to update");
+ g_set_error (error, 0, 0, "you need to specify a package to update");
remove = 1;
goto out;
} else {
@@ -299,7 +299,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "resolve") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a package name to resolve");
+ g_set_error (error, 0, 0, "you need to specify a package name to resolve");
remove = 1;
goto out;
} else {
@@ -309,7 +309,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "enable-repo") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a repo name");
+ g_set_error (error, 0, 0, "you need to specify a repo name");
remove = 1;
goto out;
} else {
@@ -318,7 +318,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "disable-repo") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a repo name");
+ g_set_error (error, 0, 0, "you need to specify a repo name");
remove = 1;
goto out;
} else {
@@ -327,12 +327,12 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (mode, "get") == 0) {
if (value == NULL) {
- pk_console_usage ("you need to specify a get type");
+ g_set_error (error, 0, 0, "you need to specify a get type");
remove = 1;
goto out;
} else if (strcmp (value, "depends") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -342,7 +342,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "updatedetail") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -352,7 +352,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "requires") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a search term");
+ g_set_error (error, 0, 0, "you need to specify a search term");
remove = 2;
goto out;
} else {
@@ -362,7 +362,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
}
} else if (strcmp (value, "description") == 0) {
if (details == NULL) {
- pk_console_usage ("you need to specify a package to find the description for");
+ g_set_error (error, 0, 0, "you need to specify a package to find the description for");
remove = 2;
goto out;
} else {
@@ -398,7 +398,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
pk_client_wait ();
remove = 2;
} else {
- pk_console_usage ("invalid get type");
+ g_set_error (error, 0, 0, "invalid get type");
}
} else if (strcmp (mode, "debug") == 0) {
pk_debug_init (TRUE);
@@ -411,7 +411,7 @@ pk_console_parse_multiple_commands (PkClient *client, GPtrArray *array)
} else if (strcmp (mode, "force-refresh") == 0) {
pk_client_refresh_cache (client, TRUE);
} else {
- pk_console_usage ("option not yet supported");
+ g_set_error (error, 0, 0, "option not yet supported");
}
out:
@@ -543,7 +543,11 @@ main (int argc, char *argv[])
}
/* process all the commands */
while (array->len > 0) {
- pk_console_parse_multiple_commands (client, array);
+ pk_console_parse_multiple_commands (client, array, &error);
+ if (error != NULL) {
+ pk_console_usage (error->message);
+ g_error_free (error);
+ }
}
g_ptr_array_free (array, TRUE);
commit 2a1a5161676ef6021cc222cec048d1e8d1c75f2b
Author: James Bowes <jbowes at dangerouslyinc.com>
Date: Sat Oct 13 21:16:59 2007 -0400
pkmon: Use GOption to implement --verbose and --version
diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index c98f261..457e3c5 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -72,13 +72,36 @@ main (int argc, char *argv[])
GMainLoop *loop;
PkConnection *pconnection;
gboolean connected;
+ gboolean verbose = FALSE;
+ gboolean program_version = FALSE;
+ GOptionContext *context;
+
+ const GOptionEntry options[] = {
+ { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
+ "Show extra debugging information", NULL },
+ { "version", '\0', 0, G_OPTION_ARG_NONE, &program_version,
+ "Show the program version and exit", NULL},
+ { NULL}
+ };
if (! g_thread_supported ()) {
g_thread_init (NULL);
}
dbus_g_thread_init ();
g_type_init ();
- pk_debug_init (TRUE);
+
+ context = g_option_context_new (NULL);
+ g_option_context_set_summary (context, _("PackageKit Monitor"));
+ g_option_context_add_main_entries (context, options, NULL);
+ g_option_context_parse (context, &argc, &argv, NULL);
+ g_option_context_free (context);
+
+ if (program_version == TRUE) {
+ g_print (VERSION "\n");
+ return 0;
+ }
+
+ pk_debug_init (verbose);
loop = g_main_loop_new (NULL, FALSE);
commit 25a531d6c2b830f31a33e9126473aa8ae996f3ca
Author: Richard Hughes <richard at hughsie.com>
Date: Mon Oct 15 19:26:12 2007 +0100
only find updates one in 5 times in the dummy backend
diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index 26078d4..dbdc763 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -151,7 +151,21 @@ backend_get_update_detail (PkBackend *backend, const gchar *package_id)
static void
backend_get_updates (PkBackend *backend)
{
+ guint number;
+ GRand *rand;
+
g_return_if_fail (backend != NULL);
+
+ rand = g_rand_new ();
+ number = g_rand_int_range (rand, 1, 5);
+ g_rand_free (rand);
+
+ /* only find updates one in 5 times */
+ if (number != 1) {
+ pk_backend_finished (backend);
+ return;
+ }
+
pk_backend_package (backend, PK_INFO_ENUM_NORMAL,
"powertop;1.8-1.fc8;i386;fedora",
"Power consumption monitor");
More information about the PackageKit
mailing list