]> git.cworth.org Git - notmuch/blobdiff - notmuch.c
CLI: simplify help command
[notmuch] / notmuch.c
index 3824bf19e07c875d4c1da58d4811330a44fd60d2..c39fcfb2cb1c066e498758cde37deae65e13e99b 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -54,14 +54,26 @@ notmuch_exit_if_unmatched_db_uuid (notmuch_database_t *notmuch);
 
 static bool print_version = false, print_help = false;
 static const char *notmuch_requested_db_uuid = NULL;
+static int query_syntax = NOTMUCH_QUERY_SYNTAX_XAPIAN;
 
 const notmuch_opt_desc_t notmuch_shared_options [] = {
     { .opt_bool = &print_version, .name = "version" },
     { .opt_bool = &print_help, .name = "help" },
     { .opt_string = &notmuch_requested_db_uuid, .name = "uuid" },
+    { .opt_keyword = &query_syntax, .name = "query", .keywords =
+         (notmuch_keyword_t []){ { "infix", NOTMUCH_QUERY_SYNTAX_XAPIAN },
+                                 { "sexp", NOTMUCH_QUERY_SYNTAX_SEXP },
+                                 { 0, 0 } } },
+
     { }
 };
 
+notmuch_query_syntax_t
+shared_option_query_syntax ()
+{
+    return query_syntax;
+}
+
 /* any subcommand wanting to support these options should call
  * inherit notmuch_shared_options and call
  * notmuch_process_shared_options (notmuch, subcommand_name);
@@ -129,21 +141,18 @@ const notmuch_opt_desc_t notmuch_shared_indexing_options [] = {
 
 
 notmuch_status_t
-notmuch_process_shared_indexing_options (notmuch_database_t *notmuch)
+notmuch_process_shared_indexing_options (notmuch_indexopts_t *opts)
 {
-    if (indexing_cli_choices.opts == NULL)
-       indexing_cli_choices.opts = notmuch_database_get_default_indexopts (notmuch);
+    if (opts == NULL)
+       return NOTMUCH_STATUS_NULL_POINTER;
+
     if (indexing_cli_choices.decrypt_policy_set) {
        notmuch_status_t status;
-       if (indexing_cli_choices.opts == NULL)
-           return NOTMUCH_STATUS_OUT_OF_MEMORY;
-       status = notmuch_indexopts_set_decrypt_policy (indexing_cli_choices.opts,
+       status = notmuch_indexopts_set_decrypt_policy (opts,
                                                       indexing_cli_choices.decrypt_policy);
        if (status != NOTMUCH_STATUS_SUCCESS) {
            fprintf (stderr, "Error: Failed to set index decryption policy to %d. (%s)\n",
                     indexing_cli_choices.decrypt_policy, notmuch_status_to_string (status));
-           notmuch_indexopts_destroy (indexing_cli_choices.opts);
-           indexing_cli_choices.opts = NULL;
            return status;
        }
     }
@@ -320,9 +329,7 @@ exec_man (const char *page)
 static int
 _help_for (const char *topic_name)
 {
-    const command_t *command;
-    const help_topic_t *topic;
-    unsigned int i;
+    char *page;
 
     if (! topic_name) {
        printf ("The notmuch mail system.\n\n");
@@ -339,23 +346,9 @@ _help_for (const char *topic_name)
        return EXIT_SUCCESS;
     }
 
-    command = find_command (topic_name);
-    if (command) {
-       char *page = talloc_asprintf (NULL, "notmuch-%s", command->name);
-       exec_man (page);
-    }
-
-    for (i = 0; i < ARRAY_SIZE (help_topics); i++) {
-       topic = &help_topics[i];
-       if (strcmp (topic_name, topic->name) == 0) {
-           char *page = talloc_asprintf (NULL, "notmuch-%s", topic->name);
-           exec_man (page);
-       }
-    }
+    page = talloc_asprintf (NULL, "notmuch-%s", topic_name);
+    exec_man (page);
 
-    fprintf (stderr,
-            "\nSorry, %s is not a known command. There's not much I can do to help.\n\n",
-            topic_name);
     return EXIT_FAILURE;
 }