implement message counting
authorSebastian Spaeth <sebastian@sspaeth.de>
Tue, 16 Mar 2010 14:53:54 +0000 (15:53 +0100)
committerSebastian Spaeth <sebastian@sspaeth.de>
Tue, 16 Mar 2010 14:53:54 +0000 (15:53 +0100)
--HG--
extra : transplant_source : %8E%83%C2%83%FA%F8X%B6%16%1D%D3X%C4o%A2%A8%28%11G%AF

cnotmuch/database.py
notmuch

index 8313813ce85e67903b3ccc12809713e4718986e2..19460b339e6d9942b093c3155fa6c3575a78e432 100644 (file)
@@ -329,6 +329,24 @@ class Messages(object):
         nmlib.notmuch_messages_move_to_next(self._msgs)
         return msg
 
+    def __len__(self):
+        """ Returns the number of contained messages
+
+        :note: As this iterates over the messages, we will not be able to 
+               iterate over them again (as in retrieve them)!
+        """
+        if self._msgs is None:
+            raise NotmuchError(STATUS.NOT_INITIALIZED)
+
+        i=0
+        while nmlib.notmuch_messages_valid(self._msgs):
+            nmlib.notmuch_messages_move_to_next(self._msgs)
+            i += 1
+        self._msgs = None
+        return i
+
+
+
     def __del__(self):
         """Close and free the notmuch Messages"""
         if self._msgs is not None:
diff --git a/notmuch b/notmuch
index 6f002aac749434f686257d58f692dcf113a3410c..56f961b47d581f68172d2e9114b9190d6ff7a10d 100755 (executable)
--- a/notmuch
+++ b/notmuch
@@ -115,6 +115,17 @@ if __name__ == '__main__':
        #TODO: handle --verbose
        print "Not implemented."
 
+   elif sys.argv[1] == 'count':
+      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("count "+querystr)
+      print(len(Query(db,querystr).search_messages()))
+
    elif sys.argv[1] == 'search-tags':
       if len(sys.argv) == 2:
          #no further search term