]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
notmuch new: Unbreak after the addition of notmuch-config.
[notmuch] / notmuch.c
index 56f93a7c11b3eac8c089bba5aaf6d70ebe82ae81..c47e64036786afbb19a834c49cc6aedffec7a5f2 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -204,18 +204,84 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
             argv[0]);
     return 1;
 }
-    
+
+/* Handle the case of "notmuch" being invoked with no 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)
+{
+    notmuch_config_t *config;
+    notmuch_bool_t is_new;
+    char *db_path;
+    struct stat st;
+
+    config = notmuch_config_open (ctx, NULL, &is_new);
+
+    /* If the user has never configured notmuch, then run
+     * notmuch_setup_command which will give a nice welcome message,
+     * and interactively guide the user through the configuration. */
+    if (is_new) {
+       notmuch_config_close (config);
+       return notmuch_setup_command (ctx, 0, NULL);
+    }
+
+    /* Notmuch is already configured, but is there a database? */
+    db_path = talloc_asprintf (ctx, "%s/%s",
+                              notmuch_config_get_database_path (config),
+                              ".notmuch");
+    if (stat (db_path, &st)) {
+       notmuch_config_close (config);
+       if (errno != ENOENT) {
+           fprintf (stderr, "Error looking for notmuch database at %s: %s\n",
+                    db_path, strerror (errno));
+           return 1;
+       }
+       printf ("Notmuch is configured, but there's not yet a database at\n\n\t%s\n\n",
+               db_path);
+       printf ("You probably want to run \"notmuch new\" now to create that database.\n\n"
+               "Note that the first run of \"notmuch new\" can take a very long time\n"
+               "and that the resulting database will use roughly the same amount of\n"
+               "storage space as the email being indexed.\n\n");
+       return 0;
+    }
+
+    printf ("Notmuch is configured and appears to have a database. Excellent!\n\n"
+           "At this point you can start exploring the functionality of notmuch by\n"
+           "using commands such as:\n\n"
+           "\tnotmuch search tag:inbox\n\n"
+           "\tnotmuch search to:\"%s\"\n\n"
+           "\tnotmuch search from:\"%s\"\n\n"
+           "\tnotmuch search subject:\"my favorite things\"\n\n"
+           "See \"notmuch help search\" for more details.\n\n"
+           "You can also use \"notmuch show\" with any of the thread IDs resulting\n"
+           "from a search. Finally, you may want to explore using a more sophisticated\n"
+           "interface to notmuch such as the emacs interface implemented in notmuch.el\n"
+           "or any other interface described at http://notmuchmail.org\n\n"
+           "And don't forget to run \"notmuch new\" whenever new mail arrives.\n\n"
+           "Have fun, and may your inbox never have much mail.\n\n",
+           notmuch_config_get_user_name (config),
+           notmuch_config_get_user_primary_email (config));
+
+    notmuch_config_close (config);
+
+    return 0;
+}
+
 int
 main (int argc, char *argv[])
 {
-    void *local = talloc_new (NULL);
+    void *local;
     command_t *command;
     unsigned int i;
 
+    local = talloc_new (NULL);
+
     g_mime_init (0);
 
     if (argc == 1)
-       return notmuch_setup_command (local, 0, NULL);
+       return notmuch (local);
 
     for (i = 0; i < ARRAY_SIZE (commands); i++) {
        command = &commands[i];