diff --git a/weboob/core/ouiboube.py b/weboob/core/ouiboube.py index 0a08818b..5180077d 100644 --- a/weboob/core/ouiboube.py +++ b/weboob/core/ouiboube.py @@ -171,7 +171,7 @@ class Weboob(object): backend_instance = module.create_instance(self, module_name, params or {}, storage) return backend_instance - def load_backends(self, caps=None, names=None, modules=None, storage=None, errors=None): + def load_backends(self, caps=None, names=None, modules=None, exclude=None, storage=None, errors=None): """ Load backends listed in config file. @@ -181,6 +181,8 @@ class Weboob(object): :type names: tuple[:class:`str`] :param modules: load backends which module is in list :type modules: tuple[:class:`str`] + :param exclude: do not load modules in list + :type exclude: tuple[:class:`str`] :param storage: use this storage if specified :type storage: :class:`weboob.tools.storage.IStorage` :param errors: if specified, store every errors in this list @@ -195,7 +197,8 @@ class Weboob(object): for instance_name, module_name, params in self.backends_config.iter_backends(): if '_enabled' in params and not params['_enabled'].lower() in ('1', 'y', 'true', 'on', 'yes') or \ names is not None and instance_name not in names or \ - modules is not None and module_name not in modules: + modules is not None and module_name not in modules or \ + exclude is not None and module_name in exclude: continue minfo = self.repositories.get_module_info(module_name) diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 12e60a13..a1b26658 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -145,6 +145,7 @@ class BaseApplication(object): if len(app_options.option_list) > 0: self._parser.add_option_group(app_options) self._parser.add_option('-b', '--backends', help='what backend(s) to enable (comma separated)') + self._parser.add_option('-e', '--exclude-backends', help='what backend(s) to exclude (comma separated)') logging_options = OptionGroup(self._parser, 'Logging Options') logging_options.add_option('-d', '--debug', action='store_true', help='display debug messages') logging_options.add_option('-q', '--quiet', action='store_true', help='display only error messages') @@ -214,10 +215,12 @@ class BaseApplication(object): """ raise NotImplementedError() - def load_backends(self, caps=None, names=None, *args, **kwargs): + def load_backends(self, caps=None, names=None, exclude=None, *args, **kwargs): if names is None and self.options.backends: names = self.options.backends.split(',') - loaded = self.weboob.load_backends(caps, names, *args, **kwargs) + if exclude is None and self.options.exclude_backends: + exclude = self.options.exclude_backends.split(',') + loaded = self.weboob.load_backends(caps, names, exclude=exclude, *args, **kwargs) if not loaded: logging.info(u'No backend loaded') return loaded