summaryrefslogtreecommitdiff
path: root/demoapp
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@gmail.com>2012-04-20 17:34:10 -0700
committerDoug Hellmann <doug.hellmann@gmail.com>2012-04-20 17:34:10 -0700
commitb3ce7441a35a1d4eb40477641543a715b60281b0 (patch)
tree938e6a01a15abfd3a8fa2838805166ea64135082 /demoapp
parent8281fa67fb799780cc14f3ce7c729c5dfe1df345 (diff)
downloadcliff-tablib-b3ce7441a35a1d4eb40477641543a715b60281b0.tar.gz
Sample program with command plugins
Diffstat (limited to 'demoapp')
-rw-r--r--demoapp/cliffdemo/__init__.py0
-rw-r--r--demoapp/cliffdemo/main.py18
-rw-r--r--demoapp/cliffdemo/simple.py8
-rw-r--r--demoapp/setup.py174
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,
+ )