Exit with nice error message failing to get repositories

If we throw an OfflineImapError in case of the Repository()
initialization, we display the nice error message and exit rather
than bomb out with a traceback. Misconfiguring a repository name in
the configuration file is now nicely pointed out to the user.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
Sebastian Spaeth 2012-08-31 20:34:54 +02:00
parent 103524c979
commit 04ffae2f00

View File

@ -217,6 +217,7 @@ class SyncableAccount(Account):
def syncrunner(self): def syncrunner(self):
self.ui.registerthread(self) self.ui.registerthread(self)
try:
accountmetadata = self.getaccountmeta() accountmetadata = self.getaccountmeta()
if not os.path.exists(accountmetadata): if not os.path.exists(accountmetadata):
os.mkdir(accountmetadata, 0o700) os.mkdir(accountmetadata, 0o700)
@ -224,6 +225,11 @@ class SyncableAccount(Account):
self.remoterepos = Repository(self, 'remote') self.remoterepos = Repository(self, 'remote')
self.localrepos = Repository(self, 'local') self.localrepos = Repository(self, 'local')
self.statusrepos = Repository(self, 'status') self.statusrepos = Repository(self, 'status')
except OfflineImapError as e:
self.ui.error(e, exc_info()[2])
if e.severity >= OfflineImapError.ERROR.CRITICAL:
raise
return
# Loop account sync if needed (bail out after 3 failures) # Loop account sync if needed (bail out after 3 failures)
looping = 3 looping = 3