Metadata-Version: 1.1
Name: clifactory
Version: 0.1.1
Summary: Command line made as easy as a web app
Home-page: https://github.com/thomas-maurice/clifactory
Author: Thomas Maurice
Author-email: thomas@maurice.fr
License: WTFPL
Description: clifacgtory
        ####################
        
        Writing CLI is **NOT** funny. Especially with all the
        argument parsing and shit. This is why this module exists.
        
        Installing
        ==========
        
        .. code:: bash
        
            $ pip install clifactory
        
        .. code:: python
        
            #!/usr/bin/env python
            # -*- coding: utf-8 -*-
        
            from clifactory import CommandLineInterface, Argument
        
            cli = CommandLineInterface()
            users = ["John Doe", "Dick Head"]
        
            @cli.endpoint(Argument('user', help='username to add'))
            def do_user_add(args):
                users.append(args.user)
                print users
        
            @cli.endpoint()
            def do_user_list(args):
                print users
        
                cli.parse()
        
        As shown in the ``example.py`` file.
        
        You can run it like:
        
        .. code:: bash
        
            $ ./exemple.py user add
            usage: exemple.py user add [-h] user
            exemple.py user add: error: too few arguments
            $ ./exemple.py user add "foo bar"
            ['John Doe', 'Dick Head', 'foo bar']
        
        
        Simple as that :)
        
        Documentation
        =============
        
        Some more documentation is comming, stay tuned.
        
        Using the module
        ----------------
        
        You have to import the components you need, which for now are:
        
        * ``CommandLineInterface``
        * ``Argument``
        * ``ExclusiveGroup``
        
        Then instanciate a ``CommandLineInterface``:
        
        .. code:: python
        
            cli = CommandLineInterface()
        
        
        Then decorate your endpoint as follows:
        
        .. code:: python
        
            @cli.endpoint(
                Argument('argument', help="some help"), # positional arg
                Argument('--user', '-u') # optional argument
            )
            def do_something(args):
                print args # args is a argparse.Namespace object
        
        You can add as many arguments as you wish, the parameters
        have to follow the ``argparse.add_argument`` syntax. Note
        that your function's name must be prefixed with ``do_`` in
        order for the parsing to work. It will just break the
        name of the function into a "tree" where each ``_``-delimited
        word will be a leaf. So you can add more methods to your
        'user' endpoint.
        
        Finally to parse something, just call:
        
        .. code:: python
        
            cli.parse()
        
        This will parse arguments from ``sys.argv``. Alternatively,
        you may parse an arbitrary string:
        
        .. code:: python
        
            cli.parse("some string")
        
        I told you it does not have to be hard!
        
        Licence
        =======
        
        ::
        
            Copyright (C) 2015  Thomas Maurice <thomas@maurice.fr>
        
            This program is free software: you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation, either version 3 of the License, or
            (at your option) any later version.
        
            This program is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.
        
            You should have received a copy of the GNU General Public License
            along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
Platform: any
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 2.7
