mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-04-27 14:57:41 +00:00
Change context manager to normal function
This commit is contained in:
parent
6ac71e0e7c
commit
214756f28c
1 changed files with 18 additions and 18 deletions
|
|
@ -7,7 +7,6 @@
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import contextlib
|
|
||||||
import functools
|
import functools
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
@ -234,9 +233,9 @@ def _create_app():
|
||||||
def inner(*a, **kw):
|
def inner(*a, **kw):
|
||||||
try:
|
try:
|
||||||
f(*a, **kw)
|
f(*a, **kw)
|
||||||
except CliError as e:
|
except:
|
||||||
cli_logger.critical(str(e))
|
if not handle_cli_error():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
return inner
|
return inner
|
||||||
|
|
||||||
|
|
@ -310,11 +309,9 @@ def _create_app():
|
||||||
try:
|
try:
|
||||||
func(queue=queue, spawn_worker=spawn_worker,
|
func(queue=queue, spawn_worker=spawn_worker,
|
||||||
handled_collections=handled_collections)
|
handled_collections=handled_collections)
|
||||||
except JobFailed as e:
|
except:
|
||||||
exceptions.append(e)
|
if not handle_cli_error():
|
||||||
except CliError as e:
|
exceptions.append(sys.exc_info()[1])
|
||||||
cli_logger.critical(str(e))
|
|
||||||
exceptions.append(e)
|
|
||||||
finally:
|
finally:
|
||||||
queue.task_done()
|
queue.task_done()
|
||||||
|
|
||||||
|
|
@ -421,10 +418,11 @@ def prepare_sync(queue, spawn_worker, handled_collections, pair_name,
|
||||||
force_delete=force_delete))
|
force_delete=force_delete))
|
||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
def handle_cli_error(status_name='sync'):
|
||||||
def catch_sync_errors(status_name):
|
|
||||||
try:
|
try:
|
||||||
yield
|
raise
|
||||||
|
except CliError as e:
|
||||||
|
cli_logger.critical(str(e))
|
||||||
except StorageEmpty as e:
|
except StorageEmpty as e:
|
||||||
cli_logger.error(
|
cli_logger.error(
|
||||||
'{status_name}: Storage "{name}" was completely emptied. Use '
|
'{status_name}: Storage "{name}" was completely emptied. Use '
|
||||||
|
|
@ -435,7 +433,6 @@ def catch_sync_errors(status_name):
|
||||||
status_name=status_name
|
status_name=status_name
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
raise JobFailed()
|
|
||||||
except SyncConflict as e:
|
except SyncConflict as e:
|
||||||
cli_logger.error(
|
cli_logger.error(
|
||||||
'{status_name}: One item changed on both sides. Resolve this '
|
'{status_name}: One item changed on both sides. Resolve this '
|
||||||
|
|
@ -447,13 +444,13 @@ def catch_sync_errors(status_name):
|
||||||
'Item href on side B: {e.href_b}\n'
|
'Item href on side B: {e.href_b}\n'
|
||||||
.format(status_name=status_name, e=e, docs=DOCS_HOME)
|
.format(status_name=status_name, e=e, docs=DOCS_HOME)
|
||||||
)
|
)
|
||||||
raise JobFailed()
|
except (click.Abort, KeyboardInterrupt, JobFailed):
|
||||||
except (click.Abort, KeyboardInterrupt):
|
pass
|
||||||
raise JobFailed()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
cli_logger.exception('Unhandled exception occured while syncing {}.'
|
cli_logger.exception('Unhandled exception occured while syncing {}.'
|
||||||
.format(status_name))
|
.format(status_name))
|
||||||
raise JobFailed()
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def sync_collection(queue, spawn_worker, handled_collections, pair_name,
|
def sync_collection(queue, spawn_worker, handled_collections, pair_name,
|
||||||
|
|
@ -466,7 +463,7 @@ def sync_collection(queue, spawn_worker, handled_collections, pair_name,
|
||||||
return
|
return
|
||||||
handled_collections.add(key)
|
handled_collections.add(key)
|
||||||
|
|
||||||
with catch_sync_errors(status_name):
|
try:
|
||||||
cli_logger.info('Syncing {}'.format(status_name))
|
cli_logger.info('Syncing {}'.format(status_name))
|
||||||
|
|
||||||
status = load_status(general['status_path'], status_name)
|
status = load_status(general['status_path'], status_name)
|
||||||
|
|
@ -476,5 +473,8 @@ def sync_collection(queue, spawn_worker, handled_collections, pair_name,
|
||||||
conflict_resolution=pair_options.get('conflict_resolution', None),
|
conflict_resolution=pair_options.get('conflict_resolution', None),
|
||||||
force_delete=status_name in force_delete
|
force_delete=status_name in force_delete
|
||||||
)
|
)
|
||||||
|
except:
|
||||||
|
if not handle_cli_error(status_name):
|
||||||
|
raise JobFailed()
|
||||||
|
|
||||||
save_status(general['status_path'], status_name, status)
|
save_status(general['status_path'], status_name, status)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue