Removed bits from clean command made redundant by #732
Force --all on stock clean command unless --orig is specified, in which case "python setup.py clean" behaves like the stock clean command. Additionally there are now --noeggs to skip egg deletion and --nopyc to skip pyc deletion.
This commit is contained in:
parent
052796d5d2
commit
a49772fcf3
1 changed files with 45 additions and 36 deletions
|
|
@ -52,65 +52,74 @@ def recursively_handle_files(directory, file_matcher, folder_matcher=None, folde
|
|||
|
||||
|
||||
class CleanCommand(_clean):
|
||||
description = "clean build artifacts"
|
||||
user_options = []
|
||||
boolean_options = []
|
||||
user_options = _clean.user_options + [("orig", None, "behave like original clean command"),
|
||||
("noeggs", None, "don't clean up eggs"),
|
||||
("nopyc", None, "don't clean up pyc files")]
|
||||
boolean_options = _clean.boolean_options + ["orig", "noeggs", "nopyc"]
|
||||
|
||||
build_folder = "build"
|
||||
source_folder = "src"
|
||||
eggs = []
|
||||
eggs =None
|
||||
|
||||
@classmethod
|
||||
def for_options(cls, build_folder="build", source_folder="src", eggs=None):
|
||||
def for_options(cls, source_folder="src", eggs=None):
|
||||
if eggs is None:
|
||||
eggs = []
|
||||
return type(cls)(cls.__name__, (cls,), dict(
|
||||
build_folder=build_folder,
|
||||
source_folder=source_folder,
|
||||
eggs=eggs
|
||||
))
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
_clean.initialize_options(self)
|
||||
|
||||
self.orig = None
|
||||
self.noeggs = None
|
||||
self.nopyc = None
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
_clean.finalize_options(self)
|
||||
|
||||
if not self.orig:
|
||||
self.all = True
|
||||
|
||||
def run(self):
|
||||
_clean.run(self)
|
||||
|
||||
# build folder
|
||||
if os.path.exists(self.__class__.build_folder):
|
||||
print("Deleting build directory")
|
||||
shutil.rmtree(self.__class__.build_folder)
|
||||
if self.orig:
|
||||
return
|
||||
|
||||
# eggs
|
||||
for egg in self.__class__.eggs:
|
||||
globbed_eggs = glob.glob(egg)
|
||||
for globbed_egg in globbed_eggs:
|
||||
print("Deleting %s directory" % globbed_egg)
|
||||
shutil.rmtree(globbed_egg)
|
||||
if not self.noeggs:
|
||||
for egg in self.eggs:
|
||||
globbed_eggs = glob.glob(egg)
|
||||
for globbed_egg in globbed_eggs:
|
||||
print("deleting '%s' egg" % globbed_egg)
|
||||
if not self.dry_run:
|
||||
shutil.rmtree(globbed_egg)
|
||||
|
||||
# pyc files
|
||||
def delete_folder_if_empty(path, applied_handler):
|
||||
if not applied_handler:
|
||||
return
|
||||
if len(os.listdir(path)) == 0:
|
||||
shutil.rmtree(path)
|
||||
print("Deleted %s since it was empty" % path)
|
||||
if not self.nopyc:
|
||||
def delete_folder_if_empty(path, applied_handler):
|
||||
if not applied_handler:
|
||||
return
|
||||
if len(os.listdir(path)) == 0:
|
||||
if not self.dry_run:
|
||||
shutil.rmtree(path)
|
||||
print("removed %s since it was empty" % path[len(self.source_folder):])
|
||||
|
||||
def delete_file(path):
|
||||
os.remove(path)
|
||||
print("Deleted %s" % path)
|
||||
def delete_file(path):
|
||||
print("removing '%s'" % path[len(self.source_folder):])
|
||||
if not self.dry_run:
|
||||
os.remove(path)
|
||||
|
||||
import fnmatch
|
||||
recursively_handle_files(
|
||||
os.path.abspath(self.__class__.source_folder),
|
||||
lambda name: fnmatch.fnmatch(name.lower(), "*.pyc"),
|
||||
folder_matcher=lambda dir, name, path: name != ".git",
|
||||
folder_handler=delete_folder_if_empty,
|
||||
file_handler=delete_file
|
||||
)
|
||||
import fnmatch
|
||||
print("recursively removing *.pyc from '%s'" % self.source_folder)
|
||||
recursively_handle_files(
|
||||
os.path.abspath(self.source_folder),
|
||||
lambda name: fnmatch.fnmatch(name.lower(), "*.pyc"),
|
||||
folder_matcher=lambda dir, name, path: name != ".git",
|
||||
folder_handler=delete_folder_if_empty,
|
||||
file_handler=delete_file
|
||||
)
|
||||
|
||||
|
||||
class NewTranslation(Command):
|
||||
|
|
|
|||
Loading…
Reference in a new issue