clean.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. import logging
  3. import argparse
  4. import os
  5. import sys
  6. import shutil
  7. logger = logging.getLogger(__name__)
  8. def launch(root, keeps, debug):
  9. logger.warning("try to clean %s and keep recent %d items", root, keeps)
  10. items = os.listdir(root)
  11. logger.debug("found %d files", len(items))
  12. if len(items) <= keeps:
  13. return
  14. items.sort(key=lambda it: os.path.getmtime(
  15. os.path.join(root, it)), reverse=True)
  16. items = items[keeps:]
  17. for it in items:
  18. it = os.path.join(root, it)
  19. logger.warning("delete %s", it)
  20. if not debug:
  21. shutil.rmtree(it)
  22. if __name__ == "__main__":
  23. parser = argparse.ArgumentParser(
  24. prog='mint',
  25. description='Clean legacy files',
  26. epilog='https://github.com/iapt-platform/mint')
  27. parser.add_argument('-k', '--keep', type=int, default=7)
  28. parser.add_argument('-d', '--debug', action='store_true')
  29. parser.add_argument('-v', '--version', action='version',
  30. version='%(prog)s v2026.1.17')
  31. args = parser.parse_args()
  32. logging.basicConfig(
  33. level=logging.DEBUG if args.debug else logging.INFO, format='%(asctime)s %(levelname).1s %(name)s: %(message)s')
  34. logging.debug('run on debug mode')
  35. if args.keep < 2:
  36. logging.error("keeps must lager than 2")
  37. sys.exit(1)
  38. root = os.getcwd()
  39. launch(root, args.keep, args.debug)
  40. logger.info("done.")