notmuch: Move welcome messages from "notmuch" to "notmuch setup".
authorCarl Worth <cworth@cworth.org>
Thu, 12 Nov 2009 01:33:31 +0000 (17:33 -0800)
committerCarl Worth <cworth@cworth.org>
Thu, 12 Nov 2009 01:33:31 +0000 (17:33 -0800)
It's quite possible for someone to read the documentation and run
"notmuch setup" rather than just "notmuch". In that case, we don't
want to be any less welcoming.

notmuch-client.h
notmuch-config.c
notmuch-setup.c
notmuch.c

index 02ff8b742227f977a481574d282aa40839a7d84a..f3396d0df721f5dd8bfa03b3a406d26d8a859412 100644 (file)
@@ -145,7 +145,9 @@ show_message_body (const char *filename,
 typedef struct _notmuch_config notmuch_config_t;
 
 notmuch_config_t *
-notmuch_config_open (void *ctx, const char *filename);
+notmuch_config_open (void *ctx,
+                    const char *filename,
+                    notmuch_bool_t *is_new_ret);
 
 void
 notmuch_config_close (notmuch_config_t *config);
index f7313bfaa055d300114845e0375308ddf1ff9cfa..248149c85de0ee0401816537ce84b1adad5a88f0 100644 (file)
@@ -145,10 +145,15 @@ get_username_from_passwd_file (void *ctx)
  * in editing the file directly.
  */
 notmuch_config_t *
-notmuch_config_open (void *ctx, const char *filename)
+notmuch_config_open (void *ctx,
+                    const char *filename,
+                    notmuch_bool_t *is_new_ret)
 {
     GError *error = NULL;
-    int config_file_is_new = 0;
+    int is_new = 0;
+
+    if (is_new_ret)
+       *is_new_ret = 0;
 
     notmuch_config_t *config = talloc (ctx, notmuch_config_t);
     if (config == NULL) {
@@ -188,7 +193,7 @@ notmuch_config_open (void *ctx, const char *filename)
            return NULL;
        }
 
-       config_file_is_new = 1;
+       is_new = 1;
     }
 
     if (notmuch_config_get_database_path (config) == NULL) {
@@ -236,7 +241,7 @@ notmuch_config_open (void *ctx, const char *filename)
 
     /* When we create a new configuration file here, we  add some
      * comments to help the user understand what can be done. */
-    if (config_file_is_new) {
+    if (is_new) {
        g_key_file_set_comment (config->key_file, NULL, NULL,
                                toplevel_config_comment, NULL);
        g_key_file_set_comment (config->key_file, "database", NULL,
@@ -245,6 +250,9 @@ notmuch_config_open (void *ctx, const char *filename)
                                user_config_comment, NULL);
     }
 
+    if (is_new_ret)
+       *is_new_ret = is_new;
+
     return config;
 }
 
index 6fd4ba5a903c208d5a23a0aa70bec0b735a9e8d3..2c3404ff67b6c0d36c511b997185400713d8dd09 100644 (file)
@@ -168,6 +168,49 @@ make_path_absolute (void *ctx, const char *path)
     return path;
 }
 
+static void
+welcome_message_pre_setup (void)
+{
+    printf (
+"Welcome to notmuch!\n\n"
+
+"The goal of notmuch is to help you manage and search your collection of\n"
+"email, and to efficiently keep up with the flow of email as it comes in.\n\n"
+
+"Notmuch needs to know a few things about you such as your name and email\n"
+"address, as well as the directory that contains your email. This is where\n"
+"you already have mail stored and where messages will be delivered in the\n"
+"future. This directory can contain any number of sub-directories. Regular\n"
+"files in these directories should be individual email messages. If there\n"
+"are other, non-email files (such as indexes maintained by other email\n"
+"programs) then notmuch will do its best to detect those and ignore them.\n\n"
+
+"If you already have your email being delivered to directories in either\n"
+"maildir or mh format, then that's perfect. Mail storage that uses mbox\n"
+"format, (where one mbox file contains many messages), will not work with\n"
+"notmuch. If that's how your mail is currently stored, we recommend you\n"
+"first convert it to maildir format with a utility such as mb2md. You can\n"
+"continue configuring notmuch now, but be sure to complete the conversion\n"
+"before you run \"notmuch new\" for the first time.\n\n");
+}
+
+static void
+welcome_message_post_setup (void)
+{
+    printf ("\n"
+"Notmuch is now configured, and the configuration settings are saved in\n"
+"a file in your home directory named .notmuch-config . If you'd like to\n"
+"change the configuration in the future, you can either edit that file\n"
+"directly or run \"notmuch setup\".\n\n"
+
+"The next step is to run \"notmuch new\" which will create a database\n"
+"that indexes all of your mail. Depending on the amount of mail you have\n"
+"the initial indexing process can take a long time, so expect that.\n"
+"Also, the resulting database will require roughly the same amount of\n"
+"storage space as your current collection of email. So please ensure you\n"
+"have sufficient storage space available now.\n\n");
+}
+
 int
 notmuch_setup_command (unused (void *ctx),
                       unused (int argc), unused (char *argv[]))
@@ -179,6 +222,7 @@ notmuch_setup_command (unused (void *ctx),
     size_t old_other_emails_len;
     GPtrArray *other_emails;
     unsigned int i;
+    int is_new;
 
 #define prompt(format, ...)                            \
     do {                                               \
@@ -188,7 +232,10 @@ notmuch_setup_command (unused (void *ctx),
        chomp_newline (response);                       \
     } while (0)
 
-    config = notmuch_config_open (ctx, NULL);
+    config = notmuch_config_open (ctx, NULL, &is_new);
+
+    if (is_new)
+       welcome_message_pre_setup ();
 
     prompt ("Your full name [%s]: ", notmuch_config_get_user_name (config));
     if (strlen (response))
@@ -235,5 +282,8 @@ notmuch_setup_command (unused (void *ctx),
 
     notmuch_config_save (config);
 
+    if (is_new)
+       welcome_message_post_setup ();
+
     return 0;
 }
index c3f0856fc58c4f662c7bfd23afcb8963308a94be..c9b5c8b989df3a0033acfd4d576d8033a98d86ab 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -206,52 +206,13 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
 }
 
 /* Handle the case of "notmuch" being invoked with no command
- * argument. Print a welcome and explanatory message, then invoke
- * notmuch_setup_command.
+ * argument. For now we just call notmuch_setup_command, but we plan
+ * to be more clever about this in the future.
  */
 static int
 notmuch (void *ctx)
 {
-    int ret;
-
-    printf (
-"Welcome to notmuch!\n\n"
-
-"The goal of notmuch is to help you manage and search your collection of\n"
-"email, and to efficiently keep up with the flow of email as it comes in.\n\n"
-
-"Notmuch needs to know a few things about you such as your name and email\n"
-"address, as well as the directory that contains your email. This is where\n"
-"you already have mail stored and where messages will be delivered in the\n"
-"future. This directory can contain any number of sub-directories. Regular\n"
-"files in these directories should be individual email messages. If there\n"
-"are other, non-email files (such as indexes maintained by other email\n"
-"programs) then notmuch will do its best to detect those and ignore them.\n\n"
-
-"If you already have your email being delivered to directories in either\n"
-"maildir or mh format, then that's perfect. Mail storage that uses mbox\n"
-"format, (where one mbox file contains many messages), will not work with\n"
-"notmuch. If that's how your mail is currently stored, we recommend you\n"
-"first convert it to maildir format with a utility such as mb2md. You can\n"
-"continue configuring notmuch now, but be sure to complete the conversion\n"
-"before you run \"notmuch new\" for the first time.\n\n");
-
-    ret = notmuch_setup_command (ctx, 0, NULL);
-
-    printf ("\n"
-"Notmuch is now configured, and the configuration settings are saved in\n"
-"a file in your home directory named .notmuch-config . If you'd like to\n"
-"change the configuration in the future, you can either edit that file\n"
-"directly or run \"notmuch setup\".\n\n"
-
-"The next step is to run \"notmuch new\" which will create a database\n"
-"that indexes all of your mail. Depending on the amount of mail you have\n"
-"the initial indexing process can take a long time, so expect that.\n"
-"Also, the resulting database will require roughly the same amount of\n"
-"storage space as your current collection of email. So please ensure you\n"
-"have sufficient storage space available now.\n\n");
-
-    return ret;
+    return notmuch_setup_command (ctx, 0, NULL);
 }
 
 int