From 353d1ec47889167d83223016c8bcb7c3ddd9d427 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sun, 12 Mar 2023 14:39:48 +0200 Subject: [PATCH] (Added) the dry-run flag to the sync one function. --- CHANGELOG.org | 3 +++ tui_rsync/cli/rsync.py | 5 +++++ tui_rsync/cli/sync.py | 14 +++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index 910182c..a716a1e 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -21,3 +21,6 @@ Added *sync group* function. ** 0.6.0 <2023-03-09 Thu> Added *path checking* function. +** 0.6.1 <2023-03-12 Sun> + Added the *dry-run* flag to the *sync one* function. + diff --git a/tui_rsync/cli/rsync.py b/tui_rsync/cli/rsync.py index 3ba6fe5..ddcbb5c 100644 --- a/tui_rsync/cli/rsync.py +++ b/tui_rsync/cli/rsync.py @@ -29,3 +29,8 @@ class Rsync: output = Popen(args, stdout=PIPE) response = output.communicate() + def dry_one(self, source, destination): + args = self.__args + ['--dry-run', source, destination] + output = Popen(args, stdout=PIPE) + response = output.communicate() + return response diff --git a/tui_rsync/cli/sync.py b/tui_rsync/cli/sync.py index f7eebd6..aeda860 100644 --- a/tui_rsync/cli/sync.py +++ b/tui_rsync/cli/sync.py @@ -41,6 +41,10 @@ def one( help="[b]The label[/] is a uniq identification of a [b]source[/].", show_default=False ), + dry: bool = typer.Option( + False, "-d", "--dry-run", + help="The command will [b]show[/] information about what will be changed.", + ) ): """ [green b]Sync[/] a [yellow]source[/] with the [yellow b]label[/] and its backups. @@ -54,7 +58,12 @@ def one( if not dest.path.is_exists(): console.print(skip_error) continue - rsync.run_one(str(src.source), str(dest)) + if dry: + response = rsync.dry_one(str(src.source), str(dest)) + out, err = response + console.print(f"{bstr_nonan(out)} {bstr_nonan(err)}") + else: + rsync.run_one(str(src.source), str(dest)) @sync.command() def group( @@ -100,3 +109,6 @@ def recover( rsync = Rsync(str(src.args)) rsync.run_one(str(dest), str(src.source)) + +def bstr_nonan(obj): + return "" if obj is None else obj.decode()