attic.py 931 B

12345678910111213141516171819202122232425262728293031323334
  1. from datetime import datetime
  2. import platform
  3. import subprocess
  4. def create_archive(excludes_filename, verbose, source_directories, repository):
  5. sources = tuple(source_directories.split(' '))
  6. command = (
  7. 'attic', 'create',
  8. '--exclude-from', excludes_filename,
  9. '{repo}::{hostname}-{timestamp}'.format(
  10. repo=repository,
  11. hostname=platform.node(),
  12. timestamp=datetime.now().isoformat(),
  13. ),
  14. ) + sources + (
  15. ('--verbose', '--stats') if verbose else ()
  16. )
  17. subprocess.check_call(command)
  18. def prune_archives(repository, verbose, keep_daily, keep_weekly, keep_monthly):
  19. command = (
  20. 'attic', 'prune',
  21. repository,
  22. '--keep-daily', str(keep_daily),
  23. '--keep-weekly', str(keep_weekly),
  24. '--keep-monthly', str(keep_monthly),
  25. ) + (('--verbose',) if verbose else ())
  26. subprocess.check_call(command)