transfer.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from setux.logger import silent
  2. from setux.core.deploy import Deployer
  3. class Downloader(Deployer):
  4. @property
  5. def label(self):
  6. return f'<- {self.name}'
  7. def check(self):
  8. dst = self.target.file.fetch(self.dst)
  9. return dst.size and dst.size > 0
  10. def deploy(self):
  11. return self.target.download(
  12. url = self.url,
  13. dst = self.dst,
  14. )
  15. class Sender(Deployer):
  16. @property
  17. def labeler(self):
  18. return silent
  19. @property
  20. def label(self):
  21. dst = f' -> {self.dst}' if self.dst != self.src else ''
  22. return f'send {self.src}{dst}'
  23. def check(self):
  24. lhash = self.local.file(self.src, verbose=False).hash
  25. rhash = self.target.file(self.dst, verbose=False).hash
  26. return rhash == lhash
  27. def deploy(self):
  28. return self.target.do_send(self.src, self.dst)
  29. class Syncer(Deployer):
  30. @property
  31. def label(self):
  32. dst = self.dst if hasattr(self, 'dst') else self.src
  33. dst = f' -> {dst}' if dst != self.src else ''
  34. return f'sync {self.src}{dst}'
  35. def check(self):
  36. dst = self.dst if hasattr(self, 'dst') else self.src
  37. lhash = self.local.dir(self.src, verbose=False).hash
  38. rhash = self.target.dir(dst, verbose=False).hash
  39. return rhash == lhash
  40. def deploy(self):
  41. dst = self.dst if hasattr(self, 'dst') else self.src
  42. return self.target.do_sync(self.src, dst)