diff --git a/cnotmuch/database.py b/cnotmuch/database.py index 8313813c..19460b33 100644 --- a/cnotmuch/database.py +++ b/cnotmuch/database.py @@ -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 6f002aac..56f961b4 100755 --- 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