click-shell is an extension to click that easily turns your click app into a shell utility. It is built on top of the built in python cmd module, with modifications to make it work with click.
- Adds a "shell" mode with command completion to any click app
- Just a one line change for most click apps
Simply replace @click.group
with @click_shell.shell
on the root level command:
import click
from click_shell import shell
# @click.group() # no longer
@shell(prompt='my-app > ', intro='Starting my app...')
def my_app():
pass
@my_app.command()
def testcommand():
click.echo("testcommand is running")
# more commands
if __name__ == '__main__':
my_app()
When run, you should expect an output like so:
$ python my_app.py
Starting my app...
my-app > testcommand
testcommand is running
my-app >
Note
It should be noted that this decorator only alters functionality if no arguments are
passed on the command line. If you try to run a command directly
(like python my_app.py the_command
in the above example), your app will function
identically to how it did before.
For more advanced usage, check out our docs at https://click-shell.readthedocs.io/
Note
Versions of click-shell 3.0.0 and higher no longer support python 2 and click 6. If you require python 2 or click 6, please remain on click-shell 2.x.