]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-setup.c
notmuch: Add a new "notmuch config" command for querying configuration.
[notmuch] / notmuch-setup.c
index 482efd2e3b9b497fcd09089809cb4a3fcab99fc1..955deb7e51330c633d1a1017de47e35742cc8d4c 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"
@@ -98,13 +99,18 @@ notmuch_setup_command (unused (void *ctx),
     GPtrArray *other_emails;
     unsigned int i;
     int is_new;
     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;
+    }
 }
 }