Esempio n. 1
0
def watch_note(note, handle_func):
    """watch a single note for changes,
    call `handle_func` on change"""
    ob = Observer()
    handler = FileSystemEventHandler()
    note_filename = path.basename(note)

    def handle_event(event):
        _, filename = path.split(event.src_path)
        if note_filename == filename or \
                path.normpath(event.src_path) == path.normpath(util.assets_dir(note)):
            print('compiling...')
            handle_func(note)
            print('done')
    handler.on_any_event = handle_event

    print('watching "{0}"...'.format(note_filename))
    ob.schedule(handler, path.dirname(note), recursive=True)
    ob.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print('stopping...')
        ob.stop()
    ob.join()
Esempio n. 2
0
def watch_note(note, handle_func):
    """watch a single note for changes,
    call `handle_func` on change"""
    ob = Observer()
    handler = FileSystemEventHandler()

    def handle_event(event):
        """update the note only if:
            - the note itself is changed
            - a referenced asset is changed
        """
        _, filename = os.path.split(event.src_path)

        # get all absolute paths of referenced images
        images = []
        for img_path in note.images:
            if not os.path.isabs(img_path):
                img_path = os.path.join(note.dir, img_path)
            images.append(img_path)

        if note.filename == filename or event.src_path in images:
            handle_func(note)
    handler.on_any_event = handle_event

    print('watching {0}...'.format(note.title))
    ob.schedule(handler, note.dir, recursive=True)
    ob.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print('stopping...')
        ob.stop()
    ob.join()
Esempio n. 3
0
 def monitoring(self):
     self._observer = Observer()
     event_handler = FileSystemEventHandler()
     event_handler.on_any_event = self.update
     self._observer.schedule(event_handler, self._path, False)
     self._observer.start()
     while True:
         time.sleep(self.delay)
     self._observer.stop()
     self._observer.join()
Esempio n. 4
0
def watch_presentation(note, outdir):
    n = note

    ob      = Observer()
    handler = FileSystemEventHandler()

    def handle_event(event):
        _, filename = path.split(event.src_path)
        if n.filename == filename or path.normpath(event.src_path) == path.normpath(n.assets):
            compile_presentation(n, outdir)
    handler.on_any_event = handle_event

    print('Watching {0}...'.format(n.title))
    ob.schedule(handler, n.notebook.path.abs, recursive=True)
    ob.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print('Stopping...')
        ob.stop()
    ob.join()
Esempio n. 5
0
def watch_note(note, handle_func):
    """watch a single note for changes,
    call `handle_func` on change"""
    ob = Observer()
    handler = FileSystemEventHandler()

    def handle_event(event):
        _, filename = os.path.split(event.src_path)
        if note.filename == filename or os.path.normpath(event.src_path) == os.path.normpath(note.assets):
            handle_func(note)
    handler.on_any_event = handle_event

    print('Watching {0}...'.format(note.title))
    ob.schedule(handler, note.notebook.path.abs, recursive=True)
    ob.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print('Stopping...')
        ob.stop()
    ob.join()
Esempio n. 6
0
def watch_note(note, handle_func):
    """watch a single note for changes,
    call `handle_func` on change"""
    ob = Observer()
    handler = FileSystemEventHandler()

    def handle_event(event):
        """update the note only if:
            - the note itself is changed
            - a referenced asset is changed
        """
        _, filename = os.path.split(event.src_path)

        # get all absolute paths of referenced images
        images = []
        for img_path in note.images:
            if not os.path.isabs(img_path):
                img_path = os.path.join(note.dir, img_path)
            images.append(img_path)

        if note.filename == filename or event.src_path in images:
            handle_func(note)

    handler.on_any_event = handle_event

    print('watching {0}...'.format(note.title))
    ob.schedule(handler, note.dir, recursive=True)
    ob.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print('stopping...')
        ob.stop()
    ob.join()
Esempio n. 7
0
                item = loads(line)
                items.append(item)
            except JSONDecodeError:
                print(line)
    except FileNotFoundError:
        pass

    table = ItemTable(items)
    with open("static/index.html", "w") as f:
        f.write(table.__html__())


def handler(event):
    if "votes" in event.src_path:
        generate_html()


if __name__ == "__main__":
    path = sys.argv[1]
    generate_html()
    event_handler = FileSystemEventHandler()
    event_handler.on_any_event = handler
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
Esempio n. 8
0
def WatchCommand(ManageCommand):
    settings = Session(ManageCommand.options.config)
    cwd = os.path.realpath(os.getcwd())
    package = cwd.split("/")[-1]

    src_brunch = path(pkg_resources.resource_filename(
        'SimpleSeer', 'static'))
    tgt_brunch = path(cwd) / package / 'brunch_src'
    
    if settings.in_cloud:
        cloud_brunch = path(pkg_resources.resource_filename('SeerCloud', 'static'))
    
    BuildCommand("").run()
    #run a build first, to make sure stuff's up to date
    
    
    #i'm not putting this in pip, since this isn't necessary in production
    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
    
    #Event watcher for SimpleSeer
    seer_event_handler = FileSystemEventHandler()
    seer_event_handler.eventqueue = []
    def rebuild(event):
        seer_event_handler.eventqueue.append(event)
    
    seer_event_handler.on_any_event = rebuild
    
    seer_observer = Observer()
    seer_observer.schedule(seer_event_handler, path=src_brunch, recursive=True)
    
    #Event watcher for SeerCloud
    if settings.in_cloud:
        cloud_event_handler = FileSystemEventHandler()
        cloud_event_handler.eventqueue = []
        def build_cloud(event):
            cloud_event_handler.eventqueue.append(event)
    
        cloud_event_handler.on_any_event = build_cloud
    
        cloud_observer = Observer()
        cloud_observer.schedule(cloud_event_handler, path=cloud_brunch, recursive=True)
    
    #Event watcher for seer application
    local_event_handler = FileSystemEventHandler()
    local_event_handler.eventqueue = []
    
    def build_local(event):
        local_event_handler.eventqueue.append(event)
        
    local_event_handler.on_any_event = build_local
    
    local_observer = Observer()
    local_observer.schedule(local_event_handler, path=tgt_brunch, recursive=True)
    
    seer_observer.start()
    if settings.in_cloud:
        cloud_observer.start()
    local_observer.start()
        
    ss_builds = 0
    while True:
        ss_builds += len(seer_event_handler.eventqueue)
        try:
            ss_builds += len(cloud_event_handler.eventqueue)
        except UnboundLocalError:
            pass

        if ss_builds:
            time.sleep(0.2)
            BuildCommand("").run()
            time.sleep(0.1)
            seer_event_handler.eventqueue = []
            try:
                cloud_event_handler.eventqueue = []
            except UnboundLocalError:
                pass
            local_event_handler.eventqueue = []
            ss_builds = 0
        
        if len(local_event_handler.eventqueue):
            time.sleep(0.2)
            with tgt_brunch:
                print "Updating " + cwd
                print subprocess.check_output(['brunch', 'build'])
            local_event_handler.eventqueue = []
                
        time.sleep(0.5)
Esempio n. 9
0
 def on_any_event(self,event):
     print("wtf : "+ str(event))
     FileSystemEventHandler.on_any_event(self,event)
Esempio n. 10
0

if __name__ == '__main__':
    l.basicConfig(level=l.DEBUG,
                  format='[%(asctime)s] %(levelname)s | %(message)s')

    # argument parser
    parser = _setup_parser()
    args = parser.parse_args()

    # args
    path = args.path
    dest_path = args.dest_path

    # event
    event_handler = FileSystemEventHandler()
    event_handler.on_any_event = lambda evt: on_event_debounced(evt)
    observer = Observer(timeout=0.1)
    l.debug(f'Observer={observer.__class__}')
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

    l.info(f'Set watchdog on {os.path.abspath(path)}...')
    try:
        pass
    except InterruptedError:
        observer.stop()
    finally:
        observer.join()
        l.info('Stopped watchdog.')
Esempio n. 11
0
    if event.event_type == 'modified':
        # Taken any action here when a file is modified.
        logger.info("Received modified event - %s." % event.src_path)
        # TODO check its the right file ??

        for func in watches:
            sFuncPath = os.path.abspath(func)
            sSrcPath = os.path.abspath(event.src_path)
            #print(sFuncPath, sSrcPath)
            if sFuncPath == sSrcPath:
                watches[func]()


some = FileSystemEventHandler()
some.on_any_event = dosomat
observer.schedule(some, ".")

transpiler = Transpiler()


def extract(dct, namespace=None):
    if not namespace: namespace = globals()
    namespace.update(dct)


def rockstar(text, namespace=None, printname=None):
    if (os.path.isfile(text)):
        rsf(text, namespace, printname)
    else:
        rs(text, namespace, printname)
Esempio n. 12
0
def create_handler(handlers):
    event_handler = FileSystemEventHandler()
    event_handler.on_any_event = lambda event: print(f"hey, {event.src_path} has been created!")
    return event_handler