quiCkLI entwickeln: Warum ich ein minimales CLI-Framework gebaut habe
Es gibt bereits ausgezeichnete Python-CLI-Frameworks. argparse ist in der
Standardbibliothek. click ist ausgereift und weit verbreitet. typer generiert
Interfaces aus Typ-Annotationen. Wenn diese existieren, warum dann noch eines bauen?
Dieser Beitrag beantwortet diese Frage ehrlich. Er ist der erste einer Reihe über die
Entwicklung von quiCkLI - was es ist, warum es existiert und wohin es geht.
Die Lücke, die ich füllen wollte
Ich wollte ein Framework, auf das ich einen Lernenden zeigen und sagen könnte: Alle wichtigen Teile sind hier sichtbar. Wenn ich versuchte, mit einem bestehenden Framework zu erklären, wie eine CLI-Anwendung funktioniert, stieß ich immer wieder auf dasselbe Problem. Das Framework war gut darin, Komplexität zu verbergen - was für Produktionscode großartig ist - aber genau dieses Verbergen machte es schwer zu verstehen, was tatsächlich passiert.
Ich wollte keines dieser Tools ersetzen. Ich wollte etwas bauen, das als Referenzimplementierung dienen kann - ein Framework, das klein genug ist, dass ein Entwickler den gesamten Quellcode an einem Nachmittag lesen und verstehen kann, wie ein CLI aus ersten Prinzipien zusammengesetzt wird.
Was „minimal" hier bedeutet
quickli ist nicht minimal, weil es weniger Funktionen hat. Es ist minimal in dem Sinn,
dass jeder Teil des Designs bewusst und sichtbar ist.
- Der Anwendungs-Container verwaltet Registrierung und Dispatch. Diese Grenze ist explizit.
- Argumente sind positional und geordnet. Optionen sind benannt. Das sind verschiedene Dinge.
- Konvertierung und Validierung sind separate Schritte, die vor dem Handler stattfinden.
- Das Framework gibt Ergebnisse an den Aufrufer zurück. Es liest
sys.argv[1:]standardmäßig, druckt aber keine Ausgabe und behandelt keine Exit-Codes.
Jede dieser Entscheidungen wurde getroffen, weil sie die Mechanik einer CLI für jemanden sichtbar lässt, der lernt, wie sie funktioniert.
Die leitende Frage
Für jede Funktion, die ich in quickli hinzuzufügen überlegte, stellte ich dieselbe
Frage: Macht das das Framework einfacher, davon zu lernen, oder macht es es mächtiger
auf Kosten des Verständnisses?
Diese Frage hat quickli klein gehalten.
Was als Nächstes kommt
Der nächste Beitrag in dieser Reihe befasst sich damit, für wen quiCkLI gedacht ist -
die Zielgruppe und was ich hoffe, dass sie aus der Verwendung mitnehmen.

