parent
38b80491f1
commit
fc3eefff09
2 changed files with 48 additions and 23 deletions
|
|
@ -29,6 +29,7 @@ from weboob.core.backendscfg import BackendsConfig
|
||||||
from weboob.core.repositories import Repositories, IProgress
|
from weboob.core.repositories import Repositories, IProgress
|
||||||
from weboob.core.scheduler import Scheduler
|
from weboob.core.scheduler import Scheduler
|
||||||
from weboob.tools.backend import BaseBackend
|
from weboob.tools.backend import BaseBackend
|
||||||
|
from weboob.tools.config.iconfig import ConfigError
|
||||||
from weboob.tools.log import getLogger
|
from weboob.tools.log import getLogger
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -94,7 +95,6 @@ class Weboob(object):
|
||||||
|
|
||||||
# Repositories management
|
# Repositories management
|
||||||
self.repositories = Repositories(workdir, datadir, self.VERSION)
|
self.repositories = Repositories(workdir, datadir, self.VERSION)
|
||||||
|
|
||||||
# Backends loader
|
# Backends loader
|
||||||
self.modules_loader = ModulesLoader(self.repositories)
|
self.modules_loader = ModulesLoader(self.repositories)
|
||||||
|
|
||||||
|
|
@ -194,6 +194,10 @@ class Weboob(object):
|
||||||
if storage is None:
|
if storage is None:
|
||||||
storage = self.storage
|
storage = self.storage
|
||||||
|
|
||||||
|
if not self.repositories.check_repositories():
|
||||||
|
self.logger.error(u'Repositories are not consistent with the sources.list')
|
||||||
|
raise ConfigError(u'Versions mismatch, please run "weboob-config update"')
|
||||||
|
|
||||||
for instance_name, module_name, params in self.backends_config.iter_backends():
|
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 \
|
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 \
|
names is not None and instance_name not in names or \
|
||||||
|
|
|
||||||
|
|
@ -535,6 +535,16 @@ class Repositories(object):
|
||||||
with open(dest_path, 'wb') as fp:
|
with open(dest_path, 'wb') as fp:
|
||||||
fp.write(icon.read())
|
fp.write(icon.read())
|
||||||
|
|
||||||
|
def _parse_source_list(self):
|
||||||
|
l = []
|
||||||
|
with open(self.sources_list, 'r') as f:
|
||||||
|
for line in f.xreadlines():
|
||||||
|
line = line.strip() % {'version': self.version}
|
||||||
|
m = re.match('(file|https?)://.*', line)
|
||||||
|
if m:
|
||||||
|
l.append(line)
|
||||||
|
return l
|
||||||
|
|
||||||
def update_repositories(self, progress=IProgress()):
|
def update_repositories(self, progress=IProgress()):
|
||||||
"""
|
"""
|
||||||
Update list of repositories by downloading them
|
Update list of repositories by downloading them
|
||||||
|
|
@ -548,28 +558,39 @@ class Repositories(object):
|
||||||
os.remove(os.path.join(self.repos_dir, name))
|
os.remove(os.path.join(self.repos_dir, name))
|
||||||
|
|
||||||
gpgv = Keyring.find_gpgv()
|
gpgv = Keyring.find_gpgv()
|
||||||
with open(self.sources_list, 'r') as f:
|
for line in self._parse_source_list():
|
||||||
for line in f.xreadlines():
|
progress.progress(0.0, 'Getting %s' % line)
|
||||||
line = line.strip() % {'version': self.version}
|
repository = Repository(line)
|
||||||
m = re.match('(file|https?)://.*', line)
|
filename = self.url2filename(repository.url)
|
||||||
if m:
|
prio_filename = '%02d-%s' % (len(self.repositories), filename)
|
||||||
progress.progress(0.0, 'Getting %s' % line)
|
repo_path = os.path.join(self.repos_dir, prio_filename)
|
||||||
repository = Repository(line)
|
keyring_path = os.path.join(self.keyrings_dir, filename)
|
||||||
filename = self.url2filename(repository.url)
|
try:
|
||||||
prio_filename = '%02d-%s' % (len(self.repositories), filename)
|
repository.retrieve_index(repo_path)
|
||||||
repo_path = os.path.join(self.repos_dir, prio_filename)
|
if gpgv:
|
||||||
keyring_path = os.path.join(self.keyrings_dir, filename)
|
repository.retrieve_keyring(keyring_path)
|
||||||
try:
|
else:
|
||||||
repository.retrieve_index(repo_path)
|
progress.error('Cannot find gpgv to check for repository authenticity.\n'
|
||||||
if gpgv:
|
'You should install GPG for better security.')
|
||||||
repository.retrieve_keyring(keyring_path)
|
except RepositoryUnavailable, e:
|
||||||
else:
|
progress.error('Unable to load repository: %s' % e)
|
||||||
progress.error('Cannot find gpgv to check for repository authenticity.\n'
|
else:
|
||||||
'You should install GPG for better security.')
|
self.repositories.append(repository)
|
||||||
except RepositoryUnavailable, e:
|
|
||||||
progress.error('Unable to load repository: %s' % e)
|
def check_repositories(self):
|
||||||
else:
|
"""
|
||||||
self.repositories.append(repository)
|
Check if sources.list is consistent with repositories
|
||||||
|
"""
|
||||||
|
l = []
|
||||||
|
for line in self._parse_source_list():
|
||||||
|
repository = Repository(line)
|
||||||
|
filename = self.url2filename(repository.url)
|
||||||
|
prio_filename = '%02d-%s' % (len(l), filename)
|
||||||
|
repo_path = os.path.join(self.repos_dir, prio_filename)
|
||||||
|
if not os.path.isfile(repo_path):
|
||||||
|
return False
|
||||||
|
l.append(repository)
|
||||||
|
return True
|
||||||
|
|
||||||
def update(self, progress=IProgress()):
|
def update(self, progress=IProgress()):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue