mirror of https://github.com/python/cpython
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""Subpackage containing all standard commands."""
|
|
import os
|
|
from packaging.errors import PackagingModuleError
|
|
from packaging.util import resolve_name
|
|
|
|
__all__ = ['get_command_names', 'set_command', 'get_command_class',
|
|
'STANDARD_COMMANDS']
|
|
|
|
|
|
STANDARD_COMMANDS = [
|
|
# packaging
|
|
'check', 'test',
|
|
# building
|
|
'build', 'build_py', 'build_ext', 'build_clib', 'build_scripts', 'clean',
|
|
# installing
|
|
'install_dist', 'install_lib', 'install_headers', 'install_scripts',
|
|
'install_data', 'install_distinfo',
|
|
# distributing
|
|
'sdist', 'bdist', 'bdist_dumb', 'bdist_wininst',
|
|
'register', 'upload', 'upload_docs',
|
|
]
|
|
|
|
if os.name == 'nt':
|
|
STANDARD_COMMANDS.insert(STANDARD_COMMANDS.index('bdist_wininst'),
|
|
'bdist_msi')
|
|
|
|
# XXX maybe we need more than one registry, so that --list-comands can display
|
|
# standard, custom and overriden standard commands differently
|
|
_COMMANDS = dict((name, 'packaging.command.%s.%s' % (name, name))
|
|
for name in STANDARD_COMMANDS)
|
|
|
|
|
|
def get_command_names():
|
|
"""Return registered commands"""
|
|
return sorted(_COMMANDS)
|
|
|
|
|
|
def set_command(location):
|
|
cls = resolve_name(location)
|
|
# XXX we want to do the duck-type checking here
|
|
_COMMANDS[cls.get_command_name()] = cls
|
|
|
|
|
|
def get_command_class(name):
|
|
"""Return the registered command"""
|
|
try:
|
|
cls = _COMMANDS[name]
|
|
except KeyError:
|
|
raise PackagingModuleError("Invalid command %s" % name)
|
|
if isinstance(cls, str):
|
|
cls = resolve_name(cls)
|
|
_COMMANDS[name] = cls
|
|
return cls
|