]> git.cworth.org Git - notmuch/blobdiff - notmuch-compact.c
emacs: Add new option notmuch-search-hide-excluded
[notmuch] / notmuch-compact.c
index bfda40e3a7f3dcaf6a99855981dd37ded8e66bd5..40ffb4286b5f7db086a89720a657b89176a2aea0 100644 (file)
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see http://www.gnu.org/licenses/ .
+ * along with this program.  If not, see https://www.gnu.org/licenses/ .
  *
  * Author: Ben Gamari <bgamari.foss@gmail.com>
  */
 
 #include "notmuch-client.h"
 
-void status_update_cb (const char *msg);
-
-void
-status_update_cb (const char *msg)
+static void
+status_update_cb (const char *msg, unused (void *closure))
 {
-    printf("%s\n", msg);
+    printf ("%s\n", msg);
 }
 
 int
-notmuch_compact_command (notmuch_config_t *config,
-                        unused (int argc),
-                        unused (char *argv[]))
+notmuch_compact_command (notmuch_database_t *notmuch, int argc, char *argv[])
 {
-    const char *path = notmuch_config_get_database_path (config);
-    const char *backup_path = path;
+    const char *backup_path = NULL;
     notmuch_status_t ret;
+    bool quiet = false;
+    int opt_index;
+
+    notmuch_opt_desc_t options[] = {
+       { .opt_string = &backup_path, .name = "backup" },
+       { .opt_bool =  &quiet, .name = "quiet" },
+       { .opt_inherit = notmuch_shared_options },
+       { }
+    };
+
+    opt_index = parse_arguments (argc, argv, options, 1);
+    if (opt_index < 0)
+       return EXIT_FAILURE;
+
+    notmuch_process_shared_options (NULL, argv[0]);
 
-    printf ("Compacting database...\n");
-    ret = notmuch_database_compact (path, backup_path, status_update_cb);
+    if (! quiet)
+       printf ("Compacting database...\n");
+    ret = notmuch_database_compact_db (notmuch, backup_path,
+                                      quiet ? NULL : status_update_cb, NULL);
     if (ret) {
-       fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string(ret));
-    } else {
-       printf ("\n");
-       printf ("\n");
-       printf ("The old database has been moved to %s/xapian.old", backup_path);
-       printf ("\n");
-       printf ("To delete run,\n");
-       printf ("\n");
-       printf ("    rm -R %s/xapian.old\n", backup_path);
-       printf ("\n");
+       fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string (ret));
+       return EXIT_FAILURE;
+    }
+
+    if (! quiet) {
+       if (backup_path)
+           printf ("The old database has been moved to %s.\n", backup_path);
+
+       printf ("Done.\n");
     }
 
-    return 0;
+    return EXIT_SUCCESS;
 }