Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Human friendly CLI builder

Project Description

Human friendly CLI builder.

Installation

pip install manage.py

Quickstart

cat manage.py

from manager import Manager

manager = Manager()

@manager.command
def echo(text, capitalyze=False):
    """print the given <name>"""
    if capitalyze:
        text = text.upper()
    return text

if __name__ == '__main__':
    manager.main()

manage --help:

usage: manage [<namespace>.]<command> [<args>]

positional arguments:
  command     the command to run

optional arguments:
  -h, --help  show this help message and exit

available commands:
  echo        print the given <name>

manage echo --help:

$ manage echo --help

usage: manage [-h] [--capitalyze] text

print the given <name>

positional arguments:
  text          no description

optional arguments:
  -h, --help    show this help message and exit
  --capitalyze  no description

Managers

Managers can be used together by merging them

from third_party import manager

my_app_manager.merge(manager)

# Merge within a new namespace:
my_app_manager.merge(manager, namespace='third_party')

Commands

Commands can be organized within namespaces

@manager.command(namespace='config')
def set(key, value):
    # ...

Arguments

Currently the framework will assume that arguments with default values are key-value arguments (--arg value) while required arguments are positional ones.

In other words, this definition:

@manager.command
def create(user):
    pass

will expect an invocation of the kind:

$ manage create foobar

and user in create() will take the value 'foobar'.

On the other hand, this:

@manager.command
def create(user=''):
    pass

will expect an invocation of the kind:

$ manage create --user foobar

The downside is obviously that it’s not currently possible to have a required non-positional argument.

Argument definition can be overridden

@manager.arg('first_arg', help='this is help for first arg')
@manager.command
def my_command(first_arg):
    # ...

Arguments can be prompted

@manager.prompt('password', hidden=True, confirm=True)
@manager.command
def connect(username, password):
    # ...

Environment

Environment variables can be sourced from a .env file as key=value pair.

Environment variable can be enforce using Manager.env decorator

@manager.env('MY_ENV_VAR')
@manager.command
def my_command():
    return os.environ['MY_ENV_VAR']
Release History

Release History

This version
History Node

0.2.10

History Node

0.2.9

History Node

0.2.8

History Node

0.2.7

History Node

0.2.6

History Node

0.2.5

History Node

0.2.4

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.2

History Node

0.2b

History Node

0.1.6

History Node

0.1.5

History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1

History Node

0.1b6

History Node

0.1b5

History Node

0.1b4

History Node

0.1b3

History Node

0.1b2

History Node

0.1b

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
manage.py-0.2.10.tar.gz (9.7 kB) Copy SHA256 Checksum SHA256 Source Jun 15, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting