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']
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file manage.py-0.2.10.tar.gz.
File metadata
- Download URL: manage.py-0.2.10.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3879bbe304794f36f98fd04af4c9f1ef2b8640fc76ee25572c591beef7cfb1c1
|
|
| MD5 |
b22f836ff14e9b1727b93f5433a1f0fc
|
|
| BLAKE2b-256 |
8226e8a4f27502e1d394dac365ca57fe140d0c5ad442ae83d416dbc866877dec
|