]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch
README: update changelog
[notmuch] / notmuch
diff --git a/notmuch b/notmuch
index d28c6ea42ca4ce7e2a9999b4964119da52f74b21..2a1540a13a9c2d0fa7a088588997a8854c75ae63 100755 (executable)
--- a/notmuch
+++ b/notmuch
@@ -106,13 +106,13 @@ def quote_query_line(argv):
 if __name__ == '__main__':
 
    # Handle command line options
-   # No option 
    #-------------------------------------
+   # No option given, print USAGE and exit
    if len(sys.argv) == 1:
       print USAGE
    #-------------------------------------
    elif sys.argv[1] == 'setup':
-       """ Interactively setup notmuch for first use. """
+       """Interactively setup notmuch for first use."""
        print "Not implemented."
    #-------------------------------------
    elif sys.argv[1] == 'new':
@@ -124,6 +124,19 @@ if __name__ == '__main__':
        if len(sys.argv) == 2: print HELPTEXT
        else: print "Not implemented"
    #-------------------------------------
+   elif sys.argv[1] == 'search':
+      db = Database()
+      if len(sys.argv) == 2:
+         #no further search term
+         querystr=''
+      else:
+         #mangle arguments wrapping terms with spaces in quotes
+         querystr = quote_query_line(sys.argv[2:])
+      logging.debug("search "+querystr)
+      t = Query(db,querystr).search_threads()
+      for thread in t:
+         print(str(thread))
+   #-------------------------------------
    elif sys.argv[1] == 'show':
       db = Database()
       if len(sys.argv) == 2:
@@ -137,20 +150,14 @@ if __name__ == '__main__':
       for msg in m:
          print(msg.format_as_text())
    #-------------------------------------
-   elif sys.argv[1] == 'new':
-       #TODO: handle --verbose
-       print "Not implemented."
-   #-------------------------------------
    elif sys.argv[1] == 'count':
-      db = Database()
       if len(sys.argv) == 2:
-         #no further search term
+         #no further search term, count all
          querystr=''
       else:
          #mangle arguments wrapping terms with spaces in quotes
          querystr = quote_query_line(sys.argv[2:])
-      logging.debug("count "+querystr)
-      print(Query(db,querystr).count_messages())
+      print(Database().create_query(querystr).count_messages())
       
    #-------------------------------------
    elif sys.argv[1] == 'tag':
@@ -235,7 +242,8 @@ if __name__ == '__main__':
 
          #set the new tags
          msg.freeze()
-         msg.remove_all_tags()
+         #only remove tags if the new ones are not a superset anyway
+         if not (new_tags > old_tags): msg.remove_all_tags()
          for tag in new_tags: msg.add_tag(tag)
          msg.thaw()