cli: Be more helpful when .notmuch-config does not exist

Previously, if the user ran any subcommand that required a
configuration (e.g., notmuch new) but didn't have a configuration,
notmuch would give the rather un-friendly and un-actionable message

  Error reading configuration file .notmuch-config: No such file or directory

Since this condition is expected for new users, this patch adds
specific handling for the file-not-found case to give a message that
is friendly and actionable.
This commit is contained in:
Austin Clements 2014-09-03 11:28:34 -04:00 committed by David Bremner
parent ef5e66ae8e
commit 3d39d346d7
2 changed files with 22 additions and 10 deletions

View file

@ -283,16 +283,22 @@ notmuch_config_open (void *ctx,
G_KEY_FILE_KEEP_COMMENTS, G_KEY_FILE_KEEP_COMMENTS,
&error)) &error))
{ {
/* If create_new is true, then the caller is prepared for a if (error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_NOENT) {
* default configuration file in the case of FILE NOT /* If create_new is true, then the caller is prepared for a
* FOUND. Otherwise, any read failure is an error. * default configuration file in the case of FILE NOT
*/ * FOUND.
if (create_new && */
error->domain == G_FILE_ERROR && if (create_new) {
error->code == G_FILE_ERROR_NOENT) g_error_free (error);
{ config->is_new = TRUE;
g_error_free (error); } else {
config->is_new = TRUE; fprintf (stderr, "Configuration file %s not found.\n"
"Try running 'notmuch setup' to create a configuration.\n",
config->filename);
talloc_free (config);
g_error_free (error);
return NULL;
}
} }
else else
{ {

View file

@ -3,6 +3,12 @@
test_description='"notmuch setup"' test_description='"notmuch setup"'
. ./test-lib.sh . ./test-lib.sh
test_begin_subtest "Notmuch new without a config suggests notmuch setup"
output=$(notmuch --config=new-notmuch-config new 2>&1)
test_expect_equal "$output" "\
Configuration file new-notmuch-config not found.
Try running 'notmuch setup' to create a configuration."
test_begin_subtest "Create a new config interactively" test_begin_subtest "Create a new config interactively"
notmuch --config=new-notmuch-config > /dev/null <<EOF notmuch --config=new-notmuch-config > /dev/null <<EOF
Test Suite Test Suite