diff --git a/cliff/__init__.py b/cliff/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..44343cc --- /dev/null +++ b/setup.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python + +PROJECT = 'cliff' + +# Change docs/sphinx/conf.py too! +VERSION = '0.1' + +# Bootstrap installation of Distribute +import distribute_setup +distribute_setup.use_setuptools() + +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 = '' + +############################################################################## +# 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/dhellmann/cliff', + + classifiers=['Development Status :: 3 - Alpha', + 'License :: OSI Approved :: MIT License', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.2', + 'Intended Audience :: Developers', + 'Environment :: Console', + ], + + platforms=['Any'], + + scripts=[], + + provides=['cliff', + ], + install_requires=['distribute'], + + 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={ + # 'console_scripts': [ + # 'venvw_hook = virtualenvwrapper.hook_loader:main' + # ], + # 'virtualenvwrapper.initialize': [ + # 'user_scripts = virtualenvwrapper.user_scripts:initialize', + # 'project = virtualenvwrapper.project:initialize', + # ], + }, + + zip_safe=False, + )