From b3c797978a61935d6387e47ab855ada3d3c1a3d5 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Thu, 19 Jan 2012 10:48:26 +0100 Subject: [PATCH] automatically install missing modules referenced in ~/.weboob/backends --- weboob/applications/weboobcfg/weboobcfg.py | 7 +------ weboob/core/ouiboube.py | 6 +++--- weboob/core/repositories.py | 5 ++++- weboob/tools/application/console.py | 8 ++------ 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/weboob/applications/weboobcfg/weboobcfg.py b/weboob/applications/weboobcfg/weboobcfg.py index cbbc9524..d0048ea5 100644 --- a/weboob/applications/weboobcfg/weboobcfg.py +++ b/weboob/applications/weboobcfg/weboobcfg.py @@ -24,7 +24,6 @@ import re from copy import copy from weboob.capabilities.account import ICapAccount -from weboob.core.repositories import IProgress from weboob.core.modules import ModuleLoadError from weboob.tools.application.repl import ReplApplication from weboob.tools.ordereddict import OrderedDict @@ -263,11 +262,7 @@ class WeboobCfg(ReplApplication): Update weboob. """ - class Progress(IProgress): - def progress(self, percent, message): - print '=== [%3.0f%%] %s' % (percent*100, message) - - self.weboob.update(Progress()) + self.weboob.update() def do_install(self, line): """ diff --git a/weboob/core/ouiboube.py b/weboob/core/ouiboube.py index d130bffe..f6bf199b 100644 --- a/weboob/core/ouiboube.py +++ b/weboob/core/ouiboube.py @@ -130,14 +130,14 @@ class Weboob(object): if caps is not None and not minfo.has_caps(caps): continue + if not minfo.is_installed(): + self.repositories.install(minfo) + module = None try: module = self.modules_loader.get_or_load_module(module_name) except ModuleLoadError, e: self.logger.error(e) - if module is None: - self.logger.warning(u'Backend "%s" is referenced in %s but was not found. ' - 'Hint: try to use "weboob-config update"' % (module_name, self.backends_config.confpath)) continue if instance_name in self.backend_instances: diff --git a/weboob/core/repositories.py b/weboob/core/repositories.py index 41cb6e3c..087b3f13 100644 --- a/weboob/core/repositories.py +++ b/weboob/core/repositories.py @@ -280,13 +280,16 @@ class Versions(object): class IProgress: def progress(self, percent, message): - pass + print '=== [%3.0f%%] %s' % (percent*100, message) class ModuleInstallError(Exception): pass DEFAULT_SOURCES_LIST = \ """# List of Weboob repositories +# +# The entries below override the entries above (with +# backends of the same name). http://updates.weboob.org/%(version)s/main/ # To enable NSFW backends, uncomment the following line: diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index 495564b8..c90bb44d 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -28,7 +28,7 @@ import locale from weboob.capabilities.account import ICapAccount, Account, AccountRegisterError from weboob.core.backendscfg import BackendAlreadyExists from weboob.core.modules import ModuleLoadError -from weboob.core.repositories import IProgress, ModuleInstallError +from weboob.core.repositories import ModuleInstallError from weboob.tools.browser import BrowserUnavailable, BrowserIncorrectPassword from weboob.tools.value import Value, ValueBool, ValueFloat, ValueInt from weboob.tools.misc import to_unicode @@ -250,12 +250,8 @@ class ConsoleApplication(BaseApplication): return backend_config def install_module(self, name): - class Progress(IProgress): - def progress(self, percent, message): - print '=== %s' % message - try: - self.weboob.repositories.install(name, Progress()) + self.weboob.repositories.install(name) except ModuleInstallError, e: print >>sys.stderr, 'Unable to install module "%s": %s' % (name, e) return 1