Some final touches to the new setuptools submodule

CleanCommand should never touch .git subfolders. Plugin CleanCommand should remove plugin's egg-info files
This commit is contained in:
Gina Häußge 2015-05-12 17:34:00 +02:00
parent 95062747ef
commit 05fd4fbc8a
2 changed files with 18 additions and 12 deletions

View file

@ -49,12 +49,6 @@ EXTRA_REQUIRES = dict(
# Dependency links for any of the aforementioned dependencies
DEPENDENCY_LINKS = []
# I18N setup
I18N_MAPPING_FILE = "babel.cfg"
I18N_INPUT_DIRS = "."
I18N_OUTPUT_DIR = os.path.join("src", "octoprint", "translations")
I18N_POT_FILE = os.path.join(I18N_OUTPUT_DIR, "messages.pot")
# Versioneer configuration
versioneer.VCS = 'git'
versioneer.versionfile_source = 'src/octoprint/_version.py'

View file

@ -29,7 +29,7 @@ def package_data_dirs(source, sub_folders):
return dirs
def recursively_handle_files(directory, file_matcher, folder_handler=None, file_handler=None):
def recursively_handle_files(directory, file_matcher, folder_matcher=None, folder_handler=None, file_handler=None):
applied_handler = False
for filename in os.listdir(directory):
@ -39,7 +39,7 @@ def recursively_handle_files(directory, file_matcher, folder_handler=None, file_
file_handler(path)
applied_handler = True
elif os.path.isdir(path):
elif os.path.isdir(path) and (folder_matcher is None or folder_matcher(directory, filename, path)):
sub_applied_handler = recursively_handle_files(path, file_matcher, folder_handler=folder_handler, file_handler=file_handler)
if sub_applied_handler:
applied_handler = True
@ -104,6 +104,7 @@ class CleanCommand(Command):
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
)
@ -302,7 +303,9 @@ def get_babel_commandclasses(pot_file=None, mapping_file="babel.cfg", input_dirs
def create_plugin_setup_parameters(identifier="todo", name="TODO", version="0.1", description="TODO", author="TODO",
mail="todo@example.com", url="TODO", license="AGPLv3", additional_data=None,
requires=None, extra_requires=None, cmdclass=None):
requires=None, extra_requires=None, cmdclass=None, eggs=None):
import pkg_resources
package = "octoprint_{identifier}".format(**locals())
if additional_data is None:
@ -310,8 +313,8 @@ def create_plugin_setup_parameters(identifier="todo", name="TODO", version="0.1"
if requires is None:
requires = ["OctoPrint"]
if not isinstance(requires, (list, tuple)):
raise ValueError("requires must be a list or a tuple")
if not isinstance(requires, list):
raise ValueError("requires must be a list")
if "OctoPrint" not in requires:
requires = ["OctoPrint"] + list(requires)
@ -325,8 +328,17 @@ def create_plugin_setup_parameters(identifier="todo", name="TODO", version="0.1"
if not isinstance(cmdclass, dict):
raise ValueError("cmdclass must be a dict")
if eggs is None:
eggs = []
if not isinstance(eggs, list):
raise ValueError("eggs must be a list")
egg = "{name}*.egg-info".format(name=pkg_resources.to_filename(pkg_resources.safe_name(name)))
if egg not in eggs:
eggs = [egg] + eggs
cmdclass.update(dict(
clean=CleanCommand.for_options(source_folder=package)
clean=CleanCommand.for_options(source_folder=package, eggs=eggs)
))
translation_dir = os.path.join(package, "translations")