]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch
Need to do capitalization changes in dict keys from rev 45d2012fcf51 for all usages
[notmuch] / notmuch
diff --git a/notmuch b/notmuch
index c01dab34905a0703a6492d1cd3691b462530503f..9f63e2107f84affcb1c9fc47f6a7cd9f3106cb15 100755 (executable)
--- a/notmuch
+++ b/notmuch
@@ -288,18 +288,73 @@ if __name__ == '__main__':
        if len(sys.argv) == 2: print HELPTEXT
        else: print "Not implemented"
    #-------------------------------------
-   elif sys.argv[1] == 'search':
+   elif sys.argv[1] == 'part':
       db = Database()
-      if len(sys.argv) == 2:
-         #no further search term
-         querystr=''
+      query_string = ''
+      part_num=0
+      first_search_term = None
+      for (i, arg) in enumerate(sys.argv[1:]):
+         if arg.startswith('--part='):
+            part_num_str=arg.split("=")[1]
+            try:
+               part_num = int(part_num_str)
+            except ValueError:
+               # just emulating behavior
+               sys.exit()
+         elif not arg.startswith('--'):
+              #save the position of the first sys.argv that is a search term
+              first_search_term = i+1
+
+      if first_search_term:
+          #mangle arguments wrapping terms with spaces in quotes
+          querystr = quote_query_line(sys.argv[first_search_term:])
+
+      
+      logging.debug("part "+querystr)
+      qry = Query(db,querystr)
+      msgs = qry.search_messages()
+      msg_list = []
+      for m in msgs:
+        msg_list.append(m)
+        
+      if len(msg_list) == 0:
+        sys.exit()
+      elif len(msg_list) > 1:
+        raise Exception("search term did not match precisely one message")
       else:
-         #mangle arguments wrapping terms with spaces in quotes
-         querystr = quote_query_line(sys.argv[2:])
+        msg = msg_list[0]
+        print(msg.get_part(part_num))
+   #-------------------------------------
+   elif sys.argv[1] == 'search':
+      db = Database()
+      query_string = ''
+      sort_order="newest-first"
+      first_search_term = None
+      for (i, arg) in enumerate(sys.argv[1:]):
+         if arg.startswith('--sort='):
+            sort_order=arg.split("=")[1]
+            if not sort_order in ("oldest-first", "newest-first"):
+               raise Exception("unknown sort order")
+         elif not arg.startswith('--'):
+              #save the position of the first sys.argv that is a search term
+              first_search_term = i+1
+
+      if first_search_term:
+          #mangle arguments wrapping terms with spaces in quotes
+          querystr = quote_query_line(sys.argv[first_search_term:])
+
+      
       logging.debug("search "+querystr)
-      t = Query(db,querystr).search_threads()
+      qry = Query(db,querystr)
+      if sort_order == "oldest-first":
+        qry.set_sort(Query.SORT.OLDEST_FIRST)
+      else:
+        qry.set_sort(Query.SORT.NEWEST_FIRST)
+      t = qry.search_threads()
+
       for thread in t:
-         print(str(thread))
+        print(str(thread))
+
    #-------------------------------------
    elif sys.argv[1] == 'show':
       entire_thread = False
@@ -344,7 +399,7 @@ if __name__ == '__main__':
 
          first_toplevel = False
 
-         msgs.print_messages(out_format, 0, True)
+         msgs.print_messages(out_format, 0, entire_thread)
 
       if out_format.lower() == "json":
          sys.stdout.write("]")