diff options
author | Doug Hellmann <doug.hellmann@gmail.com> | 2012-04-20 17:34:10 -0700 |
---|---|---|
committer | Doug Hellmann <doug.hellmann@gmail.com> | 2012-04-20 17:34:10 -0700 |
commit | b3ce7441a35a1d4eb40477641543a715b60281b0 (patch) | |
tree | 938e6a01a15abfd3a8fa2838805166ea64135082 /demoapp | |
parent | 8281fa67fb799780cc14f3ce7c729c5dfe1df345 (diff) | |
download | cliff-tablib-b3ce7441a35a1d4eb40477641543a715b60281b0.tar.gz |
Sample program with command plugins
Diffstat (limited to 'demoapp')
-rw-r--r-- | demoapp/cliffdemo/__init__.py | 0 | ||||
-rw-r--r-- | demoapp/cliffdemo/main.py | 18 | ||||
-rw-r--r-- | demoapp/cliffdemo/simple.py | 8 | ||||
-rw-r--r-- | demoapp/setup.py | 174 |
4 files changed, 200 insertions, 0 deletions
diff --git a/demoapp/cliffdemo/__init__.py b/demoapp/cliffdemo/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/demoapp/cliffdemo/__init__.py diff --git a/demoapp/cliffdemo/main.py b/demoapp/cliffdemo/main.py new file mode 100644 index 0000000..a657247 --- /dev/null +++ b/demoapp/cliffdemo/main.py @@ -0,0 +1,18 @@ +import sys + +from cliff.app import App +from cliff.commandmanager import CommandManager + + +class DemoApp(App): + def __init__(self): + super(DemoApp, self).__init__( + description='cliff demo app', + version='0.1', + command_manager=CommandManager('cliff.demo'), + ) + + +def main(): + myapp = DemoApp() + myapp.run(sys.argv[1:]) diff --git a/demoapp/cliffdemo/simple.py b/demoapp/cliffdemo/simple.py new file mode 100644 index 0000000..4416814 --- /dev/null +++ b/demoapp/cliffdemo/simple.py @@ -0,0 +1,8 @@ + +from cliff.command import Command + + +class Simple(Command): + + def run(self, parsed_args): + print 'hi!' diff --git a/demoapp/setup.py b/demoapp/setup.py new file mode 100644 index 0000000..ec3dcec --- /dev/null +++ b/demoapp/setup.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python + +PROJECT = 'cliffdemo' + +# 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='Demo app for cliff', + 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 :: Apache Software 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=[], + install_requires=['distribute', 'cliff'], + + 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': [ + 'cliffdemo = cliffdemo.main:main' + ], + 'cliff.demo': [ + 'simple = cliffdemo.simple:Simple', + 'two_part = cliffdemo.simple:Simple', + ], + # 'virtualenvwrapper.initialize': [ + # 'user_scripts = virtualenvwrapper.user_scripts:initialize', + # 'project = virtualenvwrapper.project:initialize', + # ], + }, + + zip_safe=False, + ) |