As far as I can tell rdify is finished!

This commit is contained in:
Henry Corse
2022-12-12 14:45:25 -05:00
parent ffb0582c83
commit 2e0f62a5aa

24
rdify
View File

@ -17,8 +17,9 @@ class RamDiskItem():
self.target = Path(target) self.target = Path(target)
self.persist = Path(persist) self.persist = Path(persist)
self.ramdisk = Path("/dev/shm/ramdisk") self.ramdisk = Path("/dev/shm/ramdisk")
self.full_rd_path = ramdisk.joinpath(target.name) self.full_rd_path = self.ramdisk.joinpath(self.target.name)
self.full_persist_path = persist.joinpath(target.name) self.full_persist_path = self.persist.joinpath(self.target.name)
self.rsync_destination = self.full_persist_path if self.target.is_file() else self.persist
def init(self): def init(self):
@ -26,7 +27,7 @@ class RamDiskItem():
self.ramdisk.mkdir(parents=True, exist_ok=True) self.ramdisk.mkdir(parents=True, exist_ok=True)
if target.is_file(): if self.target.is_file():
shutil.copy2(self.target, self.ramdisk) shutil.copy2(self.target, self.ramdisk)
else: else:
shutil.copytree(self.target, self.full_rd_path) shutil.copytree(self.target, self.full_rd_path)
@ -37,21 +38,28 @@ class RamDiskItem():
def sync(self): def sync(self):
# TODO: actually look at output from this... # TODO: actually look at output from this...
subprocess.run(["rsync", "-aP", "--delete", self.full_rd_path, self.full_persist_path]) subprocess.run(["rsync", "-aP", "--delete", self.full_rd_path, self.rsync_destination])
def loop_sync(self, delay): def loop_sync(self, delay):
while True: while True:
self.sync try:
time.sleep(delay) self.sync()
time.sleep(delay)
except KeyboardInterrupt:
eprint("Interrupt received, exiting...")
return
def cleanup(self): def cleanup(self):
if not self.target.is_symlink():
eprint(f"Target: {self.target} isn't a symlink!")
return
self.sync() self.sync()
self.target.unlink()
shutil.move(self.full_persist_path, self.target.parent) shutil.move(self.full_persist_path, self.target.parent)
if self.full_rd_path.is_file(): if self.full_rd_path.is_file():
self.full_rd_path.unlink() self.full_rd_path.unlink()
else: else:
shutil.rmtree(self.full_rd_path) shutil.rmtree(self.full_rd_path)
shutil.rmtree(self.full_persist_path)
def main(): def main():
@ -86,7 +94,7 @@ def main():
elif args.loop_sync: elif args.loop_sync:
rd_item.loop_sync(args.loop_sync) rd_item.loop_sync(args.loop_sync)
elif args.cleanup: elif args.cleanup:
rd_item.cleanup(args.target, args.perist) rd_item.cleanup()
else: else:
pass pass