aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autosync/__init__.py39
1 files changed, 31 insertions, 8 deletions
diff --git a/autosync/__init__.py b/autosync/__init__.py
index 6415880..ec688f8 100644
--- a/autosync/__init__.py
+++ b/autosync/__init__.py
@@ -29,10 +29,23 @@ def getTab(name="", elements=[]):
else:
tabFile = os.path.join(os.environ["HOME"], ".autoSync.{}.tab".format(name))
- with open(tabFile, "r") as f:
- for line in f.readlines():
- name, src, dst = filter(lambda i: len(i) > 0, line.rstrip("\n").split("\t"))
- tabData[name] = (os.path.expandvars(os.path.expanduser(src)), os.path.expandvars(os.path.expanduser(dst)))
+ try:
+ with open(tabFile, "r") as f:
+ for line in f.readlines():
+ name, src, dst = filter(lambda i: len(i) > 0, line.rstrip("\n").split("\t"))
+ tabData[name] = (os.path.expandvars(os.path.expanduser(src)), os.path.expandvars(os.path.expanduser(dst)))
+ except FileNotFoundError:
+ print("The tabfile @{} (path '{}') could not be read.".format(
+ name,
+ tabFile
+ ))
+ return []
+ except PermissionError:
+ print("The tabfile @{} (path '{}') is not readable to me.".format(
+ name,
+ tabFile
+ ))
+ return []
if len(elements) < 1:
elements = list(tabData.keys())
@@ -54,7 +67,13 @@ def getTimestamp(source, dest):
f.write("0")
with open("/tmp/source.ts", "r") as sourceF, open("/tmp/dest.ts", "r") as destF:
- return (float(sourceF.read()), float(destF.read()))
+ tsTuple = []
+ for f in [sourceF, destF]:
+ try:
+ tsTuple.append(float(f.read()))
+ except ValueError:
+ tsTuple.append(0)
+ return tsTuple
def run():
global server
@@ -104,6 +123,7 @@ def run():
ignoreFile = None
if tabname == "":
tabname = "default"
+ status = None
if srcT >= dstT:
msg("[{} @ {}] sending data to destination".format(name, tabname))
if not server:
@@ -111,15 +131,18 @@ def run():
f.write(str(time.time()))
else:
print("\033[2;3;37mServer mode, won't update timestamp\033[0m")
- sync(src, dst, ignoreFile, True)
+ status = sync(src, dst, ignoreFile, True)
else:
if server:
print("\033[2;3;37mServer mode, won't update timestamp\033[0m")
msg("[{} @ {}] gathering data from destination".format(name, tabname))
- sync(dst, src, ignoreFile, True)
- if not server:
+ status = sync(dst, src, ignoreFile, True)
+ if not server and status == 0:
with open(os.path.join(src, ".lastsync"), "w") as f:
f.write(str(time.time()))
+ if status != 0 and status is not None:
+ print("Error while syncing target {} @ {}, aborting".format(name, tabname))
+ return
if os.path.exists("/tmp/source.ts"):
os.unlink("/tmp/source.ts")