Metadata-Version: 2.0
Name: guacamole
Version: 0.9
Summary: Guacamole is an command line tool library for Python
Home-page: https://github.com/zyga/guacamole
Author: Zygmunt Krynicki
Author-email: me@zygoon.pl
License: LGPLv3
Keywords: argparse cli tool command sub-command subcommand
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Natural Language :: English
Classifier: Natural Language :: Polish
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows :: Windows 7
Classifier: Operating System :: Microsoft :: Windows :: Windows XP
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy

============================================================
Guacamole - Framework for Creating Command Line Applications
============================================================

.. image:: https://badge.fury.io/py/guacamole.png
    :target: http://badge.fury.io/py/guacamole

.. image:: https://travis-ci.org/zyga/guacamole.png?branch=master
        :target: https://travis-ci.org/zyga/guacamole

.. image:: https://pypip.in/d/guacamole/badge.png
        :target: https://pypi.python.org/pypi/guacamole

Tools, done right
=================

Guacamole is a LGPLv3 licensed toolkit for creating good command line
applications. Guacamole that does the right things for you and makes writing
applications easier.

.. testsetup::

    import guacamole 

.. doctest::

    >>> class HelloWorld(guacamole.Command):
    ...     """A simple hello-world application."""
    ...     def register_arguments(self, parser):
    ...         parser.add_argument('name')
    ...     def invoked(self, ctx):
    ...         print("Hello {0}!".format(ctx.args.name))

Running it directly is as simple as calling ``main()``:

.. doctest::

    >>> HelloWorld().main(['Guacamole'], exit=False)
    Hello Guacamole!
    0

What you didn't have to do is what matters:

 - configure the argument parser
 - define and setup application logging
 - initialize internationalization features
 - add debugging facilities
 - write a custom crash handler

Features
========

* Free software: LGPLv3 license
* Documentation: https://guacamole.readthedocs.org.
* Create command classes and run them from command line.
* Group commands to create complex tools.
* Use recipes, ingredients and spices to customize behavior





History
=======

0.9 (2015-05-11)
----------------

* Vastly improved documentation
* Bugfixes and changes based on early feedback
* New cmdtree module with two ingredients (for instantiating commands and for
  dispatching the invoked method)
* Simplified argparse ingredient (for just handling parser)
* Unit tests and doctests for some of the functionality

0.8 (2015-04-21)
----------------

* First release on PyPI.


2012-2015
---------

* Released on PyPI as a part of plainbox as ``plainbox.impl.clitools``,
  ``plainbox.impl.logging``, ``plainbox.i18n`` and
  ``plainbox.impl.secure.plugins``.


