JSH is a Junos-inspired CLI library for your Python apps. If you've ever logged into a Junos device, you'll know how good the CLI is. It offers:
- tab-completion, including completion of names of items in the config
- help by pressing "?" at any point
- completion on pressing either space, tab or enter
JSH attempts to reproduce some of these features (and others) in a Python library based on Readline, to allow you to build better quality CLIs for your apps.
Full documentation can be found at RTD.
Install from PyPI using pip install jsh
.
The library takes a CLI "layout", which is a dictionary-based tree structure describing your CLI commands. For example, a completely useless CLI with just an exit
command, you would define it like this:
jsh.run
is a shortcut for the following:
This creates a basic layout with a single available command (exit
), passes it to an instance jsh.JSH
, and starts an infinite loop, using the read_and_execute
method of the JSH
CLI object to interact with the user. For more control over this loop, you should write your own instead of using jsh.run
.
This provides a CLI that looks like the following:
> ?
Possible completions:
exit
> ex?
Possible completions:
exit
> exit ?
Possible completions:
<[Enter]> Execute this command
> exit