aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Austin Clements <amdragon@mit.edu>2014-09-03 11:28:34 -0400
committerGravatar David Bremner <david@tethera.net>2014-09-07 20:01:01 +0200
commit3d39d346d793b9bea0c23ae2c16600feab11ee19 (patch)
tree3c80dc78e3451f7e3f14664a776e10b3e03ed756
parentef5e66ae8e84fce75154417dd51be72f78ec1f45 (diff)
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.
-rw-r--r--notmuch-config.c26
-rwxr-xr-xtest/T040-setup.sh6
2 files changed, 22 insertions, 10 deletions
diff --git a/notmuch-config.c b/notmuch-config.c
index db487dbe..a564bcae 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -283,16 +283,22 @@ notmuch_config_open (void *ctx,
G_KEY_FILE_KEEP_COMMENTS,
&error))
{
- /* If create_new is true, then the caller is prepared for a
- * default configuration file in the case of FILE NOT
- * FOUND. Otherwise, any read failure is an error.
- */
- if (create_new &&
- error->domain == G_FILE_ERROR &&
- error->code == G_FILE_ERROR_NOENT)
- {
- g_error_free (error);
- config->is_new = TRUE;
+ if (error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_NOENT) {
+ /* If create_new is true, then the caller is prepared for a
+ * default configuration file in the case of FILE NOT
+ * FOUND.
+ */
+ if (create_new) {
+ g_error_free (error);
+ config->is_new = TRUE;
+ } else {
+ 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
{
diff --git a/test/T040-setup.sh b/test/T040-setup.sh
index 124ef1c8..b1972e70 100755
--- a/test/T040-setup.sh
+++ b/test/T040-setup.sh
@@ -3,6 +3,12 @@
test_description='"notmuch setup"'
. ./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"
notmuch --config=new-notmuch-config > /dev/null <<EOF
Test Suite