Shell Commands with sh
make is an orchestrator — it doesn't do much work itself, it calls other commands which do the work. That's what we recommend doing with jeeves as well. Among numerous ways to call other programs from Python we recommend a library named, quite concisely, sh: amoffat/sh.
Installation
It will be installed as an optional dependency of jeeves-shell[all].
Alternatives
See shell cobminators to check out other available tools.
By default, it is bundled as a dependency for jeeves, and here is a simple example.
jeeves.py
import typer
from sh import grep, pip
def list_flake8_plugins():
"""List installed plugins for Flake8."""
typer.echo(
grep(
'flake8-',
_in=pip.freeze(),
),
)
Shall we execute it?
↦
j list-flake8-pluginsflake8-bandit==3.0.0
flake8-broken-line==0.5.0
flake8-bugbear==22.12.6
flake8-commas==2.1.0
flake8-comprehensions==3.14.0
flake8-debugger==4.1.2
flake8-docstrings==1.7.0
flake8-eradicate==1.4.0
flake8-isort==4.2.0
flake8-polyfill==1.0.2
flake8-quotes==3.3.2
flake8-rst-docstrings==0.2.7
flake8-string-format==0.3.0
sh allows to call shell commands with conciseness and readability of Pythonic syntax. See the package docs for more detail.
