def main(): parser = argparse.ArgumentParser() parser.add_argument('-c', '--config', default=default.GEOFFREY_RC_FILE) parser.add_argument('path', nargs='+') args = parser.parse_args() config = Config(args.config, create=True) main = config['geoffrey'] host = main.get('host', default.HOST) websocket_port = main.get('websocket_port', default.WEBSOCKET_PORT) webserver_port = main.get('webserver_port', default.WEBSERVER_PORT) loop = asyncio.get_event_loop() em = EventManager() plugins = get_plugins(config, output_queue) for subscriptions in plugins.call('get_subscriptions'): em.add_subscriptions(subscriptions) mask = em.get_mask() asyncio.Task(websockets.serve(websocket_server, host, websocket_port)) asyncio.Task(watch_files(args.path, mask=mask)) asyncio.Task(em.consume_events(event_queue, output_queue)) webapp.run() loop.run_forever()
for event_name, event_id in EVENTS.items(): file_exps = self.config.getlist(self.section_name, event_name) if file_exps: for file_exp in file_exps: subscriptions.append( Subscription(who=self, event=event_id, what=file_exp)) return subscriptions @asyncio.coroutine def run(self, filename): raise NotImplementedError def get_plugins(*args, **kwargs): all_plugins = load('geoffrey.plugins', subclasses=GeoffreyPlugin).produce(*args, **kwargs) return PluginManager(list(filter(lambda p: p.is_enabled(), all_plugins))) if __name__ == '__main__': from geoffrey import config c = config.Config('/home/nil/.geoffreyrc', create=True) p = get_plugins(c) from geoffrey import config c = config.Config('/home/nil/.geoffreyrc', create=True) from geoffrey.plugin import get_plugins p = get_plugins(c) p.call('is_enabled') list(p.call('get_subscriptions'))