unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH] cli: Be more helpful when .notmuch-config does not exist
@ 2014-09-03 15:28 Austin Clements
  2014-09-07 18:05 ` David Bremner
  0 siblings, 1 reply; 2+ messages in thread
From: Austin Clements @ 2014-09-03 15:28 UTC (permalink / raw)
  To: notmuch

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.
---
 notmuch-config.c   | 26 ++++++++++++++++----------
 test/T040-setup.sh |  6 ++++++
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/notmuch-config.c b/notmuch-config.c
index db487db..a564bca 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 124ef1c..b1972e7 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
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] cli: Be more helpful when .notmuch-config does not exist
  2014-09-03 15:28 [PATCH] cli: Be more helpful when .notmuch-config does not exist Austin Clements
@ 2014-09-07 18:05 ` David Bremner
  0 siblings, 0 replies; 2+ messages in thread
From: David Bremner @ 2014-09-07 18:05 UTC (permalink / raw)
  To: Austin Clements, notmuch

Austin Clements <amdragon@mit.edu> writes:

>
> 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.

pushed

d

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-09-07 18:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-03 15:28 [PATCH] cli: Be more helpful when .notmuch-config does not exist Austin Clements
2014-09-07 18:05 ` David Bremner

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).