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.
Features
- Adds a "shell" mode with command completion to any click app
- Just a one line change for most click apps
Usage
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.