-def error(msg, new_line=True):
- puts_err(colored.red("Error: %s\n" % msg), new_line)
+def try_fail_repeat(command, *args):
+
+ times = (0.1, 0.5, 1, 2)
+ i = iter(times)
+ while True:
+ try:
+ command(*args)
+ return
+ except sh.ErrorReturnCode:
+ try:
+ wait = i.next()
+ except StopIteration:
+ break
+ time.sleep(wait)
+
+ raise FatalError("Command: `%s %s' failed" % (command, " ".join(args)))
+
+
+def free_space(dirname):
+ stat = os.statvfs(dirname)
+ return stat.f_bavail * stat.f_frsize