2
from setuptools import Command
3
from distutils.util import convert_path
4
from distutils import log
5
from distutils.errors import *
8
"""Delete older distributions"""
10
description = "delete older distributions, keeping N newest files"
12
('match=', 'm', "patterns to match (required)"),
13
('dist-dir=', 'd', "directory where the distributions are"),
14
('keep=', 'k', "number of matching distributions to keep"),
19
def initialize_options(self):
24
def finalize_options(self):
25
if self.match is None:
26
raise DistutilsOptionError(
27
"Must specify one or more (comma-separated) match patterns "
28
"(e.g. '.zip' or '.egg')"
31
raise DistutilsOptionError("Must specify number of files to keep")
33
self.keep = int(self.keep)
35
raise DistutilsOptionError("--keep must be an integer")
36
if isinstance(self.match, basestring):
38
convert_path(p.strip()) for p in self.match.split(',')
40
self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
43
self.run_command("egg_info")
45
for pattern in self.match:
46
pattern = self.distribution.get_name()+'*'+pattern
47
files = glob(os.path.join(self.dist_dir,pattern))
48
files = [(os.path.getmtime(f),f) for f in files]
52
log.info("%d file(s) matching %s", len(files), pattern)
53
files = files[self.keep:]
55
log.info("Deleting %s", f)