]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
Add 'notmuch count' command to show the count of matching messages
[notmuch] / notmuch.c
index cb5415abc846c59ade6b2534d2302d9a0d37c010..72ca62044e90a2a3ccd2a0cee493f81141504fa4 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -98,7 +98,8 @@ command_t commands[] = {
       "\t\tThe setup command will prompt for your full name, your primary\n"
       "\t\temail address, any alternate email addresses you use, and the\n"
       "\t\tdirectory containing your email archives. Your answers will be\n"
-      "\t\twritten to a configuration file in ${HOME}/.notmuch-config .\n"
+      "\t\twritten to a configuration file in ${NOTMUCH_CONFIG} (if set)\n"
+      "\t\tor ${HOME}/.notmuch-config.\n"
       "\n"
       "\t\tThis configuration file will be created with descriptive\n"
       "\t\tcomments, making it easy to edit by hand later to change the\n"
@@ -107,8 +108,8 @@ command_t commands[] = {
       "\t\tInvoking notmuch with no command argument will run setup if\n"
       "\t\tthe setup command has not previously been completed." },
     { "new", notmuch_new_command,
-      NULL,
-      "Find and import new messages to the notmuch database.",
+      "[--verbose]",
+      "\t\tFind and import new messages to the notmuch database.",
       "\t\tScans all sub-directories of the mail directory, performing\n"
       "\t\tfull-text indexing on new messages that are found. Each new\n"
       "\t\tmessage will be tagged as both \"inbox\" and \"unread\".\n"
@@ -122,6 +123,13 @@ command_t commands[] = {
       "\t\tis delivered and you wish to incorporate it into the database.\n"
       "\t\tThese subsequent runs will be much quicker than the initial run.\n"
       "\n"
+      "\t\tSupported options for new include:\n"
+      "\n"
+      "\t\t--verbose\n"
+      "\n"
+      "\t\t\tVerbose operation. Shows paths of message files as\n"
+      "\t\t\tthey are being indexed.\n"
+      "\n"
       "\t\tNote: \"notmuch new\" runs (other than the first run) will\n"
       "\t\tskip any read-only directories, so you can use that to mark\n"
       "\t\tdirectories that will not receive any new mail (and make\n"
@@ -179,6 +187,17 @@ command_t commands[] = {
       "\n"
       "\t\tSee \"notmuch help search-terms\" for details of the search\n"
       "\t\tterms syntax." },
+    { "count", notmuch_count_command,
+      "<search-terms> [...]",
+      "\t\tCount messages matching the search terms.",
+      "\t\tThe number of matching messages is output to stdout.\n"
+      "\n"
+      "\t\tA common use of \"notmuch count\" is to display the count\n"
+      "\t\tof messages matching both a specific tag and either inbox\n"
+      "\t\tor unread\n"
+      "\n"
+      "\t\tSee \"notmuch help search-terms\" for details of the search\n"
+      "\t\tterms syntax." },
     { "reply", notmuch_reply_command,
       "<search-terms> [...]",
       "\t\tConstruct a reply template for a set of messages.",
@@ -238,28 +257,28 @@ command_t commands[] = {
 };
 
 static void
-usage (void)
+usage (FILE *out)
 {
     command_t *command;
     unsigned int i;
 
-    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
-    fprintf (stderr, "\n");
-    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
-    fprintf (stderr, "\n");
+    fprintf (out, "Usage: notmuch <command> [args...]\n");
+    fprintf (out, "\n");
+    fprintf (out, "Where <command> and [args...] are as follows:\n");
+    fprintf (out, "\n");
 
     for (i = 0; i < ARRAY_SIZE (commands); i++) {
        command = &commands[i];
 
        if (command->arguments)
-           fprintf (stderr, "\t%s\t%s\n\n%s\n\n",
+           fprintf (out, "\t%s\t%s\n\n%s\n\n",
                     command->name, command->arguments, command->summary);
        else
-           fprintf (stderr, "\t%s\t%s\n\n",
+           fprintf (out, "\t%s\t%s\n\n",
                     command->name, command->summary);
     }
 
-    fprintf (stderr,
+    fprintf (out,
     "Use \"notmuch help <command>\" for more details on each command.\n"
     "And \"notmuch help search-terms\" for the common search-terms syntax.\n\n");
 }
@@ -271,8 +290,8 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
     unsigned int i;
 
     if (argc == 0) {
-       fprintf (stderr, "The notmuch mail system.\n\n");
-       usage ();
+       printf ("The notmuch mail system.\n\n");
+       usage (stdout);
        return 0;
     }
 
@@ -280,32 +299,32 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[])
        command = &commands[i];
 
        if (strcmp (argv[0], command->name) == 0) {
-           fprintf (stderr, "Help for \"notmuch %s\":\n\n", argv[0]);
+           printf ("Help for \"notmuch %s\":\n\n", argv[0]);
            if (command->arguments)
-               fprintf (stderr, "\t%s\t%s\n\n%s\n\n%s\n\n",
-                        command->name, command->arguments,
-                        command->summary, command->documentation);
+               printf ("\t%s\t%s\n\n%s\n\n%s\n\n",
+                       command->name, command->arguments,
+                       command->summary, command->documentation);
            else
-               fprintf (stderr, "\t%s\t%s\n\n%s\n\n", command->name,
-                        command->summary, command->documentation);
+               printf ("\t%s\t%s\n\n%s\n\n", command->name,
+                       command->summary, command->documentation);
            return 0;
        }
     }
 
     if (strcmp (argv[0], "search-terms") == 0) {
-       fprintf (stderr, "Help for <%s>\n\n", argv[0]);
+       printf ("Help for <%s>\n\n", argv[0]);
        for (i = 0; i < ARRAY_SIZE (commands); i++) {
            command = &commands[i];
 
            if (command->arguments &&
                strstr (command->arguments, "search-terms"))
            {
-               fprintf (stderr, "\t%s\t%s\n",
-                        command->name, command->arguments);
+               printf ("\t%s\t%s\n",
+                       command->name, command->arguments);
            }
        }
-       fprintf (stderr, "\n");
-       fprintf (stderr, search_terms_help);
+       printf ("\n");
+       printf (search_terms_help);
        return 0;
     }
 
@@ -400,8 +419,6 @@ main (int argc, char *argv[])
            return (command->function) (local, argc - 2, &argv[2]);
     }
 
-    /* Don't complain about "help" being an unknown command when we're
-       about to provide exactly what's wanted anyway. */
     fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",
             argv[1]);