From ae0beac9e096ed3ad1e65e28c9624ab8af86007f Mon Sep 17 00:00:00 2001 From: furtest Date: Sat, 31 Jan 2026 12:30:47 +0100 Subject: [PATCH] Catch UnknownSSHError and do not use return codes The runners were still checking for the return codes of create_ssh_master_connection instead of catching the exception. We now catch the exceptions we calling the runners in main. --- src/unisync/main.py | 6 +++++- src/unisync/runners.py | 11 +++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/unisync/main.py b/src/unisync/main.py index af34141..6ee480d 100644 --- a/src/unisync/main.py +++ b/src/unisync/main.py @@ -4,6 +4,7 @@ from pathlib import Path from unisync.argparser import create_argparser +from unisync.errors import UnknownSSHError, unisync_exit_fatal from unisync.runners import unisync_sync, unisync_add, unisync_mount from unisync.config import load_config from unisync.synchroniser import Synchroniser @@ -38,7 +39,10 @@ def main(): paths_manager = PathsManager(Path(config.roots.local), config.other.cache_dir_path) - cli_args.func(synchroniser, paths_manager, config) + try: + cli_args.func(synchroniser, paths_manager, config) + except UnknownSSHError: + unisync_exit_fatal("Connection failed quitting") if __name__ == "__main__": diff --git a/src/unisync/runners.py b/src/unisync/runners.py index 0e65dc9..6d15fef 100644 --- a/src/unisync/runners.py +++ b/src/unisync/runners.py @@ -5,11 +5,11 @@ from unisync.synchroniser import Synchroniser from unisync.paths import PathsManager from unisync.config import Config + def unisync_sync(synchroniser:Synchroniser, paths_manager:PathsManager, config: Config): del config # The function signature must be the same for all runners - if synchroniser.create_ssh_master_connection() != 0: - print("Connection failed quitting") - return 1 + + synchroniser.create_ssh_master_connection() print("Connected to the remote.") synchroniser.sync_files(paths_manager.get_paths_to_sync()) @@ -24,9 +24,8 @@ def unisync_sync(synchroniser:Synchroniser, paths_manager:PathsManager, config: def unisync_add(synchroniser:Synchroniser, paths_manager:PathsManager, config: Config): del config # The function signature must be the same for all runners - if synchroniser.create_ssh_master_connection() != 0: - print("Connection failed quitting") - return 1 + + synchroniser.create_ssh_master_connection() print("Connected to the remote.") # TODO config or cli to skip this first sync