Metadata-Version: 1.0
Name: battalion
Version: 0.2.2
Summary: Python framework for commandline applications
Home-page: UNKNOWN
Author: Kyle Rockman
Author-email: ['kyle.rockman@mac.com']
License: UNKNOWN
Description: battalion
        =========
        
        .. image:: https://pypip.in/py_versions/battalion/badge.svg?style=flat
                :target: https://pypi.python.org/pypi/battalion/
        
        .. image:: https://pypip.in/license/battalion/badge.svg?style=flat
                :target: https://pypi.python.org/pypi/battalion/
        
        .. image:: https://pypip.in/download/battalion/badge.svg?style=flat
                :target: https://pypi.python.org/pypi/battalion/
        
        .. image:: https://pypip.in/version/battalion/badge.svg?style=flat
                :target: https://pypi.python.org/pypi/battalion/
        
        .. image:: https://pypip.in/wheel/battalion/badge.svg?style=flat
                :target: https://pypi.python.org/pypi/battalion/
        
        .. image:: https://requires.io/github/rocktavious/battalion/requirements.png?branch=master
                :target: https://requires.io/github/rocktavious/battalion/requirements/?branch=master
                :alt: Requirements Status
        
        Python framework for commandline applications
        
        Quickstart
        ----------
        
        Feeling impatient? I like your style.
        
        .. code-block:: bash
        
            $ pip install battalion
        
        In mycli.py script:
        
        .. code-block:: python
        
            from battalion.api import *
            
            
            class DB(object):
                
                def __init__(self, state):
                    self.msg = state.msg
            
                def myfunc(self):
                    return self.msg
            
            
            @fixture
            def db(state):
                return DB(state)
            
            
            class mycli(CLI):    
                """
                Toplevel program - mycli
                """
                class State:
                    version = '0.0.1'
                    msg = ""
            
                @command
                def normal_function(cli, db, data=None):  # NOTE: the "db" arg will be populated from the "db" fixture function
                    """Takes in data and outputs new data"""
                    if data is None:
                        return db.myfunc()
                    else:
                        return data
            
                @command
                def greeting(cli, name="Hello"):
                    """
                    Prints "Hello {name}!"
                    """
                    print "Hello {0}!".format(name)
            
            
            class myhandler(Handler):
                """
                Organizational container of commands which can also add state variables
                """
                class State:
                    version = '0.0.2'  # Handlers can have their own versioning
                    cli = 'mycli'
                    msg = "World"
            
                @command
                def validate(cli, data):
                    return data
            
                @command
                def hello(cli, msg=None):
                    """
                    Prints "Hello World!"
                    """
                    name = cli.normal_function(data=msg)
                    name = cli.myhandler.validate(data=name)
                    cli.greeting(name=name)
            
            
            if __name__ == "__main__":
                mycli.main()
        
        Then on the commandline
        
        .. code-block:: bash
        
            $ python mycli.py myhandler hello
            > Hello World!
            $ #or if installed as a console script via setuptools
            $ mycli myhandler hello
            > Hello World!
            $ #also
            $ mycli myhandler hello "Josh"
            > Hello Josh!
            $ mycli --help
            > Toplevel program - mycli
            > 
            > Usage:
            >     mycli [options] <command> [<args>...]
            >     mycli [options]
            > 
            > Options:
            >     -h, --help                     Show this screen.
            >     --version                      Show version.
            >     -d, --debug                    Show debug messages
            >     --config=<CONFIG>              The config filepath [default: ~/.mycli.cfg]
            > 
            > Commands:
            >     greeting                       Prints "Hello {name}!"
            >     myhandler                      Organizational container of commands which can also add state variables
            > 
            $ mycli myhandler hello --help
            > Prints "Hello World!"
            > 
            > Usage:
            >     hello [options]
            >     hello <msg> 
            > 
            > Options:
            >     --msg=<MSG>                      [default: None]
            >
        
        
Platform: UNKNOWN
