From 1403fc0927ef8d9fcd945573c07f7118aab7cc20 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Mon, 9 Nov 2020 11:11:40 +0100 Subject: [PATCH] add overwrite argument to FileManagerRule --- pyinotifyd/scheduler.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pyinotifyd/scheduler.py b/pyinotifyd/scheduler.py index 22e0a7a..2bf20f5 100755 --- a/pyinotifyd/scheduler.py +++ b/pyinotifyd/scheduler.py @@ -228,8 +228,8 @@ class FileManagerRule: valid_actions = ["copy", "move", "delete"] def __init__(self, action, src_re, dst_re="", auto_create=False, - dirmode=None, filemode=None, user=None, group=None, - rec=False): + overwrite=False, dirmode=None, filemode=None, user=None, + group=None, rec=False): valid = f"{', '.join(FileManagerRule.valid_actions)}" assert action in self.valid_actions, \ f"action: expected [{valid}], got{action}" @@ -239,6 +239,8 @@ class FileManagerRule: f"dst_re: expected {type('')}, got {type(dst_re)}" assert isinstance(auto_create, bool), \ f"auto_create: expected {type(bool)}, got {type(auto_create)}" + assert isinstance(overwrite, bool), \ + f"auto_create: expected {type(bool)}, got {type(auto_create)}" assert dirmode is None or isinstance(dirmode, int), \ f"dirmode: expected {type(int)}, got {type(dirmode)}" assert filemode is None or isinstance(filemode, int), \ @@ -254,6 +256,7 @@ class FileManagerRule: self.src_re = re.compile(src_re) self.dst_re = dst_re self.auto_create = auto_create + self.overwrite = overwrite self.dirmode = dirmode self.filemode = filemode self.user = user @@ -351,9 +354,9 @@ class FileManagerScheduler(TaskScheduler): f"unable to {rule.action} '{path}', " f"resulting destination path is empty") - if os.path.exists(dst): + if os.path.exists(dst) and not self.overwrite: raise RuntimeError( - f"unable to move file from '{path} " + f"unable to {rule.action} file from '{path} " f"to '{dst}', destination path exists already") dst_dir = os.path.dirname(dst)