import os
from pyndexter import *
from pyndexter.sources.file import *
from urlparse import urlsplit, urlunsplit                                                                                                            
from urllib import quote, unquote
from time import time
from trac.util.text import pretty_size

start = None
orig_start = None
def filter(ctx, stream):
    global start
    map = {ADDED: 'ADDED', MODIFIED: 'MODIFIED', REMOVED: 'REMOVED'}
    for transition, uri in stream:
        if not start:
            orig_start = start = time()
            print "initializing start: %s" % str(start)
        else:
            print "  elapsed time: %s" % str(time() - start)
            start = time()
        scheme, location, path, query, fragment = urlsplit(uri, 'file')
        path = os.path.normpath(unquote(path))
        print map[transition], path, "(%s)" % pretty_size(os.stat(path).st_size)
        yield transition, uri

if __name__ == '__main__':
    start = None
    framework = Framework('builtin://%s/pyndexter.idx' % os.getcwd())
    framework.add_source('file://' + quote('/home/pacopablo/irc/trac/logs/ChannelLogger/freenode/#trac') + '?include=*.log')
    framework.update(filter=filter)
    print "  elapsed time: %s" % str(time() - start)
    print
    print "Total time to index files: %s" % str(time() - orig_start)
