Command Line Interface

Im Power-User-Bereich waren grafische UIs noch nie sehr beliebt. Automatisierung ist auf GUIs einfach nicht möglich.

Shellscripting

Shellscripts sind sehr beliebt für die Automatsierung von Aufgaben. Allerdings sind die verwendeten GNU-Tools und nicht mal die Shells plattformunabhängig. Allzu häufig landet man in der Wartungshölle und muß die Skripte an die Platform anpassen.

Für Server-CLI ist das vielleicht kein Problem, wenn man aber Tooling für Entwickler auf vielen verschiedenen Plattformen (Windows, Linux, MacOS) bereitstellen will, dann nervts und kostet unnötig Geld.

Open CLI Framework

Auf diesem Node-basierten Framework basieren beispielsweise Heroku-CLI und Salesforce-CLI. Programmiert wird in JavaScript oder TypeScript.

Python

PyInquirer

Clint

Cliff

Click

Setuptool:

Ein Setup-Tool verhindert, daß man die CLI über Bash-Skripte installieren muß, die in den Umgebungen ganz unterschiedlich funktionieren. Deshalb empfiehlt Click die Nutzung eines setup.py-Scripts, in dem auch die Abhängigkeiten definiert werden. Anschließend kann man die CLI (z. B. mycli) komfortabel über

virtualenv venv
source venv/bin/activate
pip install --editable 

installieren und dann wie ein Binary von überall nutzen (z. B. mycli --help).

Bash-Completion:

Eine installierte/aufrufbare CLI (z. B. sb ... aufgerufen über sb --help) liefert durch eine gesetzte Umgebungsvariable (im Beispiel _SB_COMPLETE=zsh_source sb) das Script, das erforderlich ist, um Auto-Completion in der Shell zu ermöglichen (die Skripte sind Shell-abhängig). Mit folgendem Snippet, das man beispielsweise in ~/.zshrc packt, ist das dann erledigt (für eine ZSH-Shell):

eval "$(_SB_COMPLETE=zsh_source sb)"

Anschließend steht Auto-Completion zur Verfügung.

Zur Optimierung (die Generierung des Skripts kostet Zeit) kann man allerdings auch die shell-spezifischen Skripte erzeugen und zur Ausführung zur Verfügung stellen (unter Versionskontrolle beispielsweise).

Typer

  • basiert auf Click ... die Verwandschaft kann man deutlich erkennen

Last updated

Was this helpful?