Metadata-Version: 1.1
Name: mach.py
Version: 0.1.3
Summary: Create CLI interfaces quickly
Home-page: https://github.com/oz123/mach
Author: Oz N Tiram
Author-email: oz.tiram@gmail.com
License: UNKNOWN
Description: ========
        M.A.C.H
        ========
        .. image:: https://readthedocs.org/projects/mach/badge/?version=latest
           :target: http://mach.readthedocs.io/en/latest/?badge=latest
        .. image:: https://travis-ci.org/oz123/mach.svg?branch=master
           :target: https://travis-ci.org/oz123/mach   
        .. image:: https://coveralls.io/repos/github/oz123/mach/badge.svg?branch=master
           :target: https://coveralls.io/github/oz123/mach?branch=master
        
        .. image:: https://coveralls.io/repos/github/oz123/mach/badge.svg?branch=master
        :target: https://coveralls.io/github/oz123/mach?branch=master
        
        
        Magical Argparse Command Helper
        
        .. image:: https://raw.githubusercontent.com/oz123/mach/master/imgs/mach-logo.jpg
        
        
        Features
        --------
        
         * Get your CLI interfaces quickly
         * Turn a simple class to a CLI application or an interactive interpreter.
        
        
        Given:
        
        .. code:: python
        
          class Calculator:
        
              def add(self, a, b):
                  """adds two numbers and prints the result"""
                  return a + b
        
              def div(self, a, b):
                  """divide one number by the other"""
                  return a / b
        
        You can make command line application using the decorator ``mach1``:
        
        .. code:: python
        
           from mach import mach1
        
           @mach1
           class Calculator:
        
               def add(self, int: a, int: b):
                   """adds two numbers and prints the result"""
                  print(a + b)
        
               def div(self, int: a, int: b):
                   """divide one number by the other"""
                  print(a / b)
        
        
           calc = Calculator()
        
           calc.run()
        
        Now if you run the module, you will get a program that you can invoke with
        the flag ``-h`` or ``--help``:
        
        .. code:: shell
        
           $ python calc.py -h
           usage: calc.py [-h] {add,div} ...
        
           positional arguments:
           {add,div}   commands
        
              add       adds two numbers and prints the result
              div       divide one number by the other
        
           optional arguments:
             -h, --help  show this help message and exit
        
        
        each method is a subcommand, with type checking and it's own very help.
        Hench, this won't work:
        
        .. code:: shell
        
           $ python calc.py add foo bar
           usage: calc.py add [-h] b a
           calc.py add: error: argument b: invalid int value: 'foo'
        
        And this will:
        
        .. code:: shell
        
           $ python calc.py add 4 9
           13
        
        To see the help of the subcommand use ``-h``:
        
        .. code:: shell
        
           $ python calc.py add -h
           usage: calc.py add [-h] b a
        
           positional arguments:
            b
            a
        
           optional arguments:
             -h, --help  show this help message and exit
        
        With the help of the decorator ``mach2`` you can turn your class to CLI
        application and have also an iteractive shell which invoke when no
        parameters are given:
        
        .. code:: shell
        
           $ ./examples/calc2.py
           Welcome to the calc shell. Type help or ? to list commands.
        
           calc2 > ?
        
           Documented commands (type help <topic>):
           ========================================
           add  div  exit  help
        
           calc2 > help add
           adds two numbers and prints the result
           calc2 > add 2 4
           6
           calc2 > div 6 2
           3.0
           calc2 > exit
           Come back soon ...
           $
        
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Topic :: Software Development
