notmuch: Implement 'notmuch search'
authorSebastian Spaeth <sebastian@sspaeth.de>
Wed, 24 Mar 2010 10:08:43 +0000 (11:08 +0100)
committerSebastian Spaeth <sebastian@sspaeth.de>
Wed, 24 Mar 2010 10:08:43 +0000 (11:08 +0100)
This passes all search tests for the notmuch test suite. We don't have the nice
recent date formatting, no --format and no --sort option implemented though.

notmuch

diff --git a/notmuch b/notmuch
index 92f68150f321b9bcf517785d6d2596def07711c7..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,10 +150,6 @@ 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':
       if len(sys.argv) == 2:
          #no further search term, count all