Add long_description and custom clean command (setup.py)

This commit is contained in:
Peter Bittner 2016-04-10 23:40:16 +02:00
parent a0b92e38c8
commit 9413e7b590
2 changed files with 54 additions and 4 deletions

View file

@ -34,6 +34,10 @@ No prerequisites are required, all test dependencies will be installed
automatically by ``tox`` in virtual environments created on the fly. automatically by ``tox`` in virtual environments created on the fly.
Unfortunately, you'll have to install ``virtualenv`` for this to work, though. Unfortunately, you'll have to install ``virtualenv`` for this to work, though.
To remove all build files and folders including Python byte code you can run::
$ python setup.py clean
.. |latest-version| image:: https://img.shields.io/pypi/v/django-todo.svg .. |latest-version| image:: https://img.shields.io/pypi/v/django-todo.svg
:alt: Latest version on PyPI :alt: Latest version on PyPI

View file

@ -1,9 +1,13 @@
#!/usr/bin/env python #!/usr/bin/env python
from glob import glob
from os import remove
from os.path import abspath, dirname, join
from setuptools import setup, find_packages from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand from setuptools.command.test import test as TestCommand
import shlex from shlex import split
import sys from shutil import rmtree
from sys import exit
import todo as package import todo as package
@ -24,14 +28,55 @@ class Tox(TestCommand):
import tox import tox
args = self.tox_args args = self.tox_args
if args: if args:
args = shlex.split(self.tox_args) args = split(self.tox_args)
errno = tox.cmdline(args=args) errno = tox.cmdline(args=args)
sys.exit(errno) exit(errno)
class Clean(TestCommand):
def run(self):
delete_in_root = [
'build',
'dist',
'.eggs',
'*.egg-info',
'.tox',
]
delete_everywhere = [
'__pycache__',
'*.pyc',
]
for candidate in delete_in_root:
rmtree_glob(candidate)
for visible_dir in glob('[A-Za-z0-9]*'):
for candidate in delete_everywhere:
rmtree_glob(join(visible_dir, candidate))
rmtree_glob(join(visible_dir, '*', candidate))
rmtree_glob(join(visible_dir, '*', '*', candidate))
def rmtree_glob(file_glob):
for fobj in glob(file_glob):
try:
rmtree(fobj)
print('%s/ removed ...' % fobj)
except OSError:
try:
remove(fobj)
print('%s removed ...' % fobj)
except OSError:
pass
def read_file(*pathname):
with open(join(dirname(abspath(__file__)), *pathname)) as f:
return f.read()
setup( setup(
name='django-todo', name='django-todo',
version=package.__version__, version=package.__version__,
description=package.__doc__.strip(), description=package.__doc__.strip(),
long_description=read_file('README.rst'),
author=package.__author__, author=package.__author__,
author_email=package.__email__, author_email=package.__email__,
url=package.__url__, url=package.__url__,
@ -54,6 +99,7 @@ setup(
zip_safe=False, zip_safe=False,
tests_require=['tox'], tests_require=['tox'],
cmdclass={ cmdclass={
'clean': Clean,
'test': Tox, 'test': Tox,
}, },
) )