automatically install missing modules referenced in ~/.weboob/backends

This commit is contained in:
Romain Bignon 2012-01-19 10:48:26 +01:00
commit b3c797978a
4 changed files with 10 additions and 16 deletions

View file

@ -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):
"""

View file

@ -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:

View file

@ -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:

View file

@ -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