192 lines
6.2 KiB
Python
192 lines
6.2 KiB
Python
#!/usr/bin/env python
|
|
|
|
PROJECT = 'cliff'
|
|
|
|
# Change docs/source/conf.py too!
|
|
VERSION = '1.3.3'
|
|
|
|
from setuptools import setup, find_packages
|
|
|
|
from distutils.util import convert_path
|
|
from fnmatch import fnmatchcase
|
|
import os
|
|
import sys
|
|
|
|
try:
|
|
long_description = open('README.rst', 'rt').read()
|
|
except IOError:
|
|
long_description = ''
|
|
|
|
install_requires = [
|
|
'PrettyTable>=0.6,<0.8',
|
|
'cmd2>=0.6.4',
|
|
]
|
|
|
|
# We need a different version of PyParsing, depending on which version
|
|
# of Python we're using. cmd2 should have this set properly, but until
|
|
# there is a release declare the dependency ourselves.
|
|
# http://trac-hg.assembla.com/python-cmd2/rev/a5f3d5a89d6c
|
|
if sys.version_info[0] < 3:
|
|
install_requires.append('pyparsing==1.5.7')
|
|
else:
|
|
install_requires.append('pyparsing>=2.0.0')
|
|
|
|
try:
|
|
import argparse
|
|
except ImportError:
|
|
install_requires.append('argparse')
|
|
|
|
|
|
##############################################################################
|
|
# find_package_data is an Ian Bicking creation.
|
|
|
|
# Provided as an attribute, so you can append to these instead
|
|
# of replicating them:
|
|
standard_exclude = ('*.py', '*.pyc', '*~', '.*', '*.bak', '*.swp*')
|
|
standard_exclude_directories = ('.*', 'CVS', '_darcs', './build',
|
|
'./dist', 'EGG-INFO', '*.egg-info')
|
|
|
|
|
|
def find_package_data(
|
|
where='.', package='',
|
|
exclude=standard_exclude,
|
|
exclude_directories=standard_exclude_directories,
|
|
only_in_packages=True,
|
|
show_ignored=False,
|
|
):
|
|
"""
|
|
Return a dictionary suitable for use in ``package_data``
|
|
in a distutils ``setup.py`` file.
|
|
|
|
The dictionary looks like::
|
|
|
|
{'package': [files]}
|
|
|
|
Where ``files`` is a list of all the files in that package that
|
|
don't match anything in ``exclude``.
|
|
|
|
If ``only_in_packages`` is true, then top-level directories that
|
|
are not packages won't be included (but directories under packages
|
|
will).
|
|
|
|
Directories matching any pattern in ``exclude_directories`` will
|
|
be ignored; by default directories with leading ``.``, ``CVS``,
|
|
and ``_darcs`` will be ignored.
|
|
|
|
If ``show_ignored`` is true, then all the files that aren't
|
|
included in package data are shown on stderr (for debugging
|
|
purposes).
|
|
|
|
Note patterns use wildcards, or can be exact paths (including
|
|
leading ``./``), and all searching is case-insensitive.
|
|
|
|
This function is by Ian Bicking.
|
|
"""
|
|
|
|
out = {}
|
|
stack = [(convert_path(where), '', package, only_in_packages)]
|
|
while stack:
|
|
where, prefix, package, only_in_packages = stack.pop(0)
|
|
for name in os.listdir(where):
|
|
fn = os.path.join(where, name)
|
|
if os.path.isdir(fn):
|
|
bad_name = False
|
|
for pattern in exclude_directories:
|
|
if (fnmatchcase(name, pattern)
|
|
or fn.lower() == pattern.lower()):
|
|
bad_name = True
|
|
if show_ignored:
|
|
print >> sys.stderr, (
|
|
"Directory %s ignored by pattern %s"
|
|
% (fn, pattern))
|
|
break
|
|
if bad_name:
|
|
continue
|
|
if os.path.isfile(os.path.join(fn, '__init__.py')):
|
|
if not package:
|
|
new_package = name
|
|
else:
|
|
new_package = package + '.' + name
|
|
stack.append((fn, '', new_package, False))
|
|
else:
|
|
stack.append((fn,
|
|
prefix + name + '/',
|
|
package,
|
|
only_in_packages))
|
|
elif package or not only_in_packages:
|
|
# is a file
|
|
bad_name = False
|
|
for pattern in exclude:
|
|
if (fnmatchcase(name, pattern)
|
|
or fn.lower() == pattern.lower()):
|
|
bad_name = True
|
|
if show_ignored:
|
|
print >> sys.stderr, (
|
|
"File %s ignored by pattern %s"
|
|
% (fn, pattern))
|
|
break
|
|
if bad_name:
|
|
continue
|
|
out.setdefault(package, []).append(prefix + name)
|
|
return out
|
|
##############################################################################
|
|
|
|
|
|
setup(
|
|
name=PROJECT,
|
|
version=VERSION,
|
|
|
|
description='Command Line Interface Formulation Framework',
|
|
long_description=long_description,
|
|
|
|
author='Doug Hellmann',
|
|
author_email='doug.hellmann@gmail.com',
|
|
|
|
url='https://github.com/dreamhost/cliff',
|
|
download_url='https://github.com/dreamhost/cliff/tarball/master',
|
|
|
|
classifiers=['Development Status :: 5 - Production/Stable',
|
|
'License :: OSI Approved :: Apache Software License',
|
|
'Programming Language :: Python',
|
|
'Programming Language :: Python :: 2',
|
|
'Programming Language :: Python :: 2.7',
|
|
'Programming Language :: Python :: 3',
|
|
'Programming Language :: Python :: 3.2',
|
|
'Programming Language :: Python :: 3.3',
|
|
'Intended Audience :: Developers',
|
|
'Environment :: Console',
|
|
],
|
|
|
|
platforms=['Any'],
|
|
|
|
scripts=[],
|
|
|
|
provides=['cliff',
|
|
],
|
|
install_requires=install_requires,
|
|
|
|
namespace_packages=[],
|
|
packages=find_packages(),
|
|
include_package_data=True,
|
|
# Scan the input for package information
|
|
# to grab any data files (text, images, etc.)
|
|
# associated with sub-packages.
|
|
package_data=find_package_data(PROJECT,
|
|
package=PROJECT,
|
|
only_in_packages=False,
|
|
),
|
|
|
|
entry_points={
|
|
'cliff.formatter.list': [
|
|
'table = cliff.formatters.table:TableFormatter',
|
|
'csv = cliff.formatters.commaseparated:CSVLister',
|
|
],
|
|
'cliff.formatter.show': [
|
|
'table = cliff.formatters.table:TableFormatter',
|
|
'shell = cliff.formatters.shell:ShellFormatter',
|
|
],
|
|
},
|
|
|
|
zip_safe=False,
|
|
)
|