diff --git a/src/octoprint_setuptools/__init__.py b/src/octoprint_setuptools/__init__.py index e441ae50..9592c163 100644 --- a/src/octoprint_setuptools/__init__.py +++ b/src/octoprint_setuptools/__init__.py @@ -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):