From 3132b8dd42731e68724144ca29de1a20794b733e Mon Sep 17 00:00:00 2001 From: djcb Date: Sun, 9 Sep 2012 14:07:34 +0300 Subject: [PATCH] * mu: improve help output --- mu/mu-cmd-find.c | 12 ++++++++---- mu/mu-cmd.c | 49 ++++++++++++++++++++++++++++-------------------- mu/mu.cc | 19 +++++++++++++++---- 3 files changed, 52 insertions(+), 28 deletions(-) diff --git a/mu/mu-cmd-find.c b/mu/mu-cmd-find.c index 79f9c166..80a9a3a3 100644 --- a/mu/mu-cmd-find.c +++ b/mu/mu-cmd-find.c @@ -702,8 +702,13 @@ query_params_valid (MuConfig *opts, GError **err) { const gchar *xpath; - xpath = mu_runtime_path (MU_RUNTIME_PATH_XAPIANDB); + if (!opts->params[1]) { + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, + "missing query"); + return FALSE; + } + xpath = mu_runtime_path (MU_RUNTIME_PATH_XAPIANDB); if (mu_util_check_dir (xpath, TRUE, FALSE)) return TRUE; @@ -731,11 +736,10 @@ mu_cmd_find (MuStore *store, MuConfig *opts, GError **err) if (opts->exec) opts->format = MU_CONFIG_FORMAT_EXEC; /* pseudo format */ - if (!query_params_valid (opts, err) || !format_params_valid(opts, err)) { - + if (!query_params_valid (opts, err) || + !format_params_valid(opts, err)) { if (MU_G_ERROR_CODE(err) == MU_ERROR_IN_PARAMETERS) show_usage (); - return MU_G_ERROR_CODE (err); } diff --git a/mu/mu-cmd.c b/mu/mu-cmd.c index 4533df57..2d89cfd8 100644 --- a/mu/mu-cmd.c +++ b/mu/mu-cmd.c @@ -270,8 +270,8 @@ mu_cmd_mkdir (MuConfig *opts, GError **err) MU_ERROR_INTERNAL); if (!opts->params[1]) { - g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, - "missing directory parameter"); + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, + "missing directory parameter"); return MU_ERROR_IN_PARAMETERS; } @@ -325,8 +325,8 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err) /* note: params[0] will be 'add' */ if (!opts->params[0] || !opts->params[1]) { g_print ("usage: mu add []\n"); - g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, - "missing source and/or target"); + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, + "missing source and/or target"); return MU_ERROR_IN_PARAMETERS; } @@ -344,8 +344,8 @@ mu_cmd_add (MuStore *store, MuConfig *opts, GError **err) } if (!allok) { - g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_XAPIAN_STORE_FAILED, - "store failed for some message(s)"); + mu_util_g_set_error (err, MU_ERROR_XAPIAN_STORE_FAILED, + "store failed for some message(s)"); return MU_ERROR_XAPIAN_STORE_FAILED; } @@ -366,7 +366,7 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err) /* note: params[0] will be 'add' */ if (!opts->params[0] || !opts->params[1]) { g_warning ("usage: mu remove []"); - g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, "missing source and/or target"); return MU_ERROR_IN_PARAMETERS; } @@ -468,6 +468,12 @@ mu_cmd_verify (MuConfig *opts, GError **err) g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_VERIFY, MU_ERROR_INTERNAL); + if (!opts->params[1]) { + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, + "missing message-file parameter"); + return MU_ERROR_IN_PARAMETERS; + } + msg = mu_msg_new_from_file (opts->params[1], NULL, err); if (!msg) return MU_ERROR; @@ -504,7 +510,7 @@ show_usage (void) { g_print ("usage: mu command [options] [parameters]\n"); g_print ("where command is one of index, find, cfind, view, mkdir, " - "extract, add, remove or server\n"); + "extract, add, remove, verify or server\n"); g_print ("see the mu, mu- or mu-easy manpages for " "more information\n"); } @@ -560,6 +566,7 @@ check_params (MuConfig *opts, GError **err) MuError mu_cmd_execute (MuConfig *opts, GError **err) { + MuError merr; g_return_val_if_fail (opts, MU_ERROR_INTERNAL); if (opts->version) { @@ -574,26 +581,28 @@ mu_cmd_execute (MuConfig *opts, GError **err) /* already handled in mu-config.c */ case MU_CONFIG_CMD_HELP: return MU_OK; - case MU_CONFIG_CMD_CFIND: return mu_cmd_cfind (opts, err); - case MU_CONFIG_CMD_MKDIR: return mu_cmd_mkdir (opts, err); - case MU_CONFIG_CMD_VIEW: return mu_cmd_view (opts, err); - case MU_CONFIG_CMD_VERIFY: return mu_cmd_verify (opts, err); - case MU_CONFIG_CMD_EXTRACT: return mu_cmd_extract (opts, err); + case MU_CONFIG_CMD_CFIND: merr = mu_cmd_cfind (opts, err); break; + case MU_CONFIG_CMD_MKDIR: merr = mu_cmd_mkdir (opts, err); break; + case MU_CONFIG_CMD_VIEW: merr = mu_cmd_view (opts, err); break; + case MU_CONFIG_CMD_VERIFY: merr = mu_cmd_verify (opts, err); break; + case MU_CONFIG_CMD_EXTRACT:merr = mu_cmd_extract (opts, err); break; case MU_CONFIG_CMD_FIND: - return with_store (mu_cmd_find, opts, TRUE, err); + merr = with_store (mu_cmd_find, opts, TRUE, err); break; case MU_CONFIG_CMD_INDEX: - return with_store (mu_cmd_index, opts, FALSE, err); + merr = with_store (mu_cmd_index, opts, FALSE, err); break; case MU_CONFIG_CMD_ADD: - return with_store (mu_cmd_add, opts, FALSE, err); + merr = with_store (mu_cmd_add, opts, FALSE, err); break; case MU_CONFIG_CMD_REMOVE: - return with_store (mu_cmd_remove, opts, FALSE, err); + merr = with_store (mu_cmd_remove, opts, FALSE, err); break; case MU_CONFIG_CMD_SERVER: - return with_store (mu_cmd_server, opts, FALSE, err); + merr = with_store (mu_cmd_server, opts, FALSE, err); break; default: show_usage (); - g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, - "unknown command '%s'", opts->cmdstr); + mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, + "unknown command '%s'", opts->cmdstr); return MU_ERROR_IN_PARAMETERS; } + + return merr; } diff --git a/mu/mu.cc b/mu/mu.cc index 4074709d..0ea2b875 100644 --- a/mu/mu.cc +++ b/mu/mu.cc @@ -33,14 +33,16 @@ static void -handle_error (GError *err) +handle_error (MuConfig *conf, GError *err) { const char *advise; + char *dynadvise; if (!err) return; /* nothing to do */ - advise = NULL; + dynadvise = NULL; + advise = NULL; switch (err->code) { @@ -55,13 +57,22 @@ handle_error (GError *err) case MU_ERROR_XAPIAN_IS_EMPTY: advise = "please try 'mu index'"; break; + case MU_ERROR_IN_PARAMETERS: + if (conf->cmd != MU_CONFIG_CMD_UNKNOWN) + dynadvise = g_strdup_printf ("see 'mu help %s'", + conf->cmdstr); + break; default: break; /* nothing to do */ } g_warning ("%s", err->message); if (advise) - g_message ("%s", advise); + g_print ("%s\n", advise); + if (dynadvise) { + g_print ("%s\n", dynadvise); + g_free (dynadvise); + } } @@ -87,7 +98,7 @@ main (int argc, char *argv[]) err = NULL; rv = mu_cmd_execute (conf, &err); - handle_error (err); + handle_error (conf, err); g_clear_error (&err);