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.
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:
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.
This provides a CLI that looks like the following:
> ?
Possible completions:
exit
> ex?
Possible completions:
exit
> exit ?
Possible completions:
<[Enter]> Execute this command
> exit