def __init__(self): base_config = parse_config(os.path.abspath('config%slsx' % os.path.extsep)) for config in glob.glob(os.path.abspath(os.path.join(os.path.dirname(lascaux.__file__), 'config', '*%s*' % os.path.extsep))): merge_dict(self, parse_config(config)) for package in base_config['app_packages']: __import__(package) try: module = __import__(package) except: module = None if not module: self['app_packages'].remove(package) continue package_dir = os.path.abspath(os.path.dirname(module.__file__)) for config in glob.glob(os.path.join(package_dir, 'config', '*%s*' % os.path.extsep)): self.setdefault(package, dict()) self[package]['package_dir'] = package_dir merge_dict(self, parse_config(config)) merge_dict(self, base_config)
def find_plugins(self, app=None): for app_package in config['app_packages']: package_dir = config[app_package]['package_dir'] for plugin in glob.glob(os.path.join(package_dir, 'plugins', '*')): if not os.path.isdir(plugin): continue plugin_name = os.path.basename(plugin) if not plugin_name in config[app_package]['plugins']: continue plugin_config = config[app_package]['plugins'][plugin_name] plugin_config['package_dir'] = plugin plugin_config['routes'] = parse_config(os.path.join(plugin, plugin_config['routing'])) if app: self.plugins.append(Plugin(app=app.get_root(), name=plugin_name, app_package=app_package, config=plugin_config)) else: self.plugins.append(Plugin(name=plugin_name, app_package=app_package, config=plugin_config)) logger.info("Found plugin `%s` in '%s'" % (plugin_name, plugin)) return self.plugins