]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-setup.c
new: Defer updating directory mtimes until the end.
[notmuch] / notmuch-setup.c
index 482efd2e3b9b497fcd09089809cb4a3fcab99fc1..c3ea9371c13cbc4058922fbdc920a5755e4084f0 100644 (file)
@@ -76,7 +76,8 @@ welcome_message_post_setup (void)
 "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"
 "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"
+"directly or run \"notmuch setup\".  To choose an alternate configuration\n"
+"location, set ${NOTMUCH_CONFIG}.\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 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"
@@ -91,20 +92,25 @@ notmuch_setup_command (unused (void *ctx),
                       unused (int argc), unused (char *argv[]))
 {
     char *response = NULL;
                       unused (int argc), unused (char *argv[]))
 {
     char *response = NULL;
-    size_t response_size;
+    size_t response_size = 0;
     notmuch_config_t *config;
     notmuch_config_t *config;
-    char **old_other_emails;
+    const char **old_other_emails;
     size_t old_other_emails_len;
     GPtrArray *other_emails;
     unsigned int i;
     int is_new;
     size_t old_other_emails_len;
     GPtrArray *other_emails;
     unsigned int i;
     int is_new;
-
-#define prompt(format, ...)                            \
-    do {                                               \
-       printf (format, ##__VA_ARGS__);                 \
-       fflush (stdout);                                \
-       getline (&response, &response_size, stdin);     \
-       chomp_newline (response);                       \
+    const char **new_tags;
+    size_t new_tags_len;
+
+#define prompt(format, ...)                                    \
+    do {                                                       \
+       printf (format, ##__VA_ARGS__);                         \
+       fflush (stdout);                                        \
+       if (getline (&response, &response_size, stdin) < 0) {   \
+           printf ("Exiting.\n");                              \
+           exit (1);                                           \
+       }                                                       \
+       chomp_newline (response);                               \
     } while (0)
 
     config = notmuch_config_open (ctx, NULL, &is_new);
     } while (0)
 
     config = notmuch_config_open (ctx, NULL, &is_new);
@@ -155,10 +161,45 @@ notmuch_setup_command (unused (void *ctx),
        notmuch_config_set_database_path (config, absolute_path);
     }
 
        notmuch_config_set_database_path (config, absolute_path);
     }
 
-    notmuch_config_save (config);
+    new_tags = notmuch_config_get_new_tags (config, &new_tags_len);
 
 
-    if (is_new)
-       welcome_message_post_setup ();
+    printf ("Tags to apply to all new messages (separated by spaces) [");
+
+    for (i = 0; i < new_tags_len; i++) {
+       if (i != 0)
+           printf (" ");
+       printf ("%s", new_tags[i]);
+    }
+
+    prompt ("]: ");
 
 
-    return 0;
+    if (strlen (response)) {
+       GPtrArray *tags = g_ptr_array_new ();
+       char *tag = response;
+       char *space;
+
+       while (tag && *tag) {
+           space = strchr (tag, ' ');
+           if (space)
+               g_ptr_array_add (tags, talloc_strndup (ctx, tag, space - tag));
+           else
+               g_ptr_array_add (tags, talloc_strdup (ctx, tag));
+           tag = space;
+           while (tag && *tag == ' ')
+               tag++;
+       }
+
+       notmuch_config_set_new_tags (config, (const char **) tags->pdata,
+                                    tags->len);
+
+       g_ptr_array_free (tags, TRUE);
+    }
+
+    if (! notmuch_config_save (config)) {
+       if (is_new)
+         welcome_message_post_setup ();
+       return 0;
+    } else {
+       return 1;
+    }
 }
 }