Skip to main content

Turn a dict of arguments into cli commands, ideal companion of docopt.

Project description

commandopt

Turn a dict of arguments into cli commands, ideal companion of docopt.

Why ?

Using the commandopt.commandopt decorator, you are able to declare commands to be executed depending on the input arguments of your app (required or optional).

It reduces the boilerplate code in your main().

Declaration

def commandopt(mandopts: List, opts: List = None):
    # ...

Call

@commandopt(mandatory_arguments, optional_arguments)
def xxxx(*args, **kwargs):

Example usage

#myapp/myapp.py
"""Naval Fate.

Usage:
  naval_fate.py ship new <name>...
  naval_fate.py new-ship [<name>]
  naval_fate.py --version

Options:
  --version     Show version.

"""
from commandopt import Command
from docopt import docopt

import myapp.commands.ship

if __name__ == '__main__':
    arguments = docopt(__doc__, version='Naval Fate 2.0')
    run = Command(arguments)  # get the registered function
    run(arguments)  # execute the function
    # or
    # run = Command(arguments, call=True)
#myapp/commands/ship.py
from commandopt import commandopt

class ShipCommand:

    @commandopt(["ship", "new", "<name>"])
    @commandopt(["new-ship"], ["<name>"])
    def new(arguments):
        """You can stack the decorator if you want."""
        name = arguments["<name>"] or "case when name is empty"
        # ... your code here

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for Commandopt, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size Commandopt-0.2.0.tar.gz (2.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page