Zum Hauptinhalt springen

Anleitung 1: Hello World

Diese Anleitung erstellt die kleinste nützliche quickli-Anwendung: ein Begrüßungs- werkzeug, das einen Namen und ein optionales Flag für Großbuchstaben akzeptiert.

Du lernst:

  • eine Application mit einer Beschreibung zu erstellen
  • mit @app.entrypoint einen Einstiegspunkt zu registrieren
  • ein Positions-Argument hinzuzufügen
  • ein boolesches Option-Flag hinzuzufügen
  • die Anwendung über die Kommandozeile auszuführen

Das vollständige Beispiel​

Speichere die folgende Datei als hello.py:

from __future__ import annotations

from quickli import Application, Argument, Option


app = Application(
name="hello",
description="Greet a person from the command line.",
)


@app.entrypoint(
help_text="Print a greeting.",
arguments=[Argument("name", help_text="Name to greet.")],
options=[
Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
),
],
)
def greet(name: str, uppercase: bool = False) -> str:
message = f"Hello, {name}!"
return message.upper() if uppercase else message


if __name__ == "__main__":
sys.exit(app.main())

Ausführen​

python hello.py Ada
# Hello, Ada!

python hello.py Ada --uppercase
# HELLO, ADA!

python hello.py Ada -u
# HELLO, ADA!

Erklärung Zeile für Zeile​

Imports​

from quickli import Application, Argument, Option

Du musst nur die drei verwendeten Klassen importieren. quickli hält seine öffentliche API klein und ausdrücklich.

Die Anwendung erstellen​

app = Application(
name="hello",
description="Greet a person from the command line.",
)

Application ist der zentrale Container. name wird in der Hilfe verwendet. description erscheint unter der Nutzungszeile, wenn du das Werkzeug ohne Argumente startest.

Den Einstiegspunkt registrieren​

@app.entrypoint(
help_text="Print a greeting.",
arguments=[Argument("name", help_text="Name to greet.")],
options=[
Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
),
],
)
def greet(name: str, uppercase: bool = False) -> str:
...

@app.entrypoint ist für Anwendungen ohne Befehl gedacht. Die Anwendung hat einen einzigen Zweck, daher ist kein Befehlsname nötig.

  • help_text erscheint in der erzeugten Nutzungsausgabe.
  • arguments ist eine Liste von Argument-Instanzen in Positionsreihenfolge.
  • options ist eine Liste von Option-Instanzen.

Der Konstruktor von Argument​

Argument("name", help_text="Name to greet.")

Argument erwartet als erstes Argument einen Positionsnamen. Dieser Name muss zum entsprechenden Funktionsparameter passen. Argumente sind standardmäßig erforderlich. Für ein optionales Argument übergibst du required=False und einen default.

Der Konstruktor von Option​

Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
)
  • "uppercase" wird in der Kommandozeile zu --uppercase.
  • short_name="u" ergänzt die Kurzform -u.
  • is_flag=True bedeutet, dass die Option boolesch ist: vorhanden → True, nicht vorhanden → False.
  • Der Funktionsparameter muss zum Optionsnamen passen, wobei Bindestriche durch Unterstriche ersetzt werden.

Die Handler-Funktion​

def greet(name: str, uppercase: bool = False) -> str:
message = f"Hello, {name}!"
return message.upper() if uppercase else message

Der Handler erhält die geparsten Werte direkt. quickli ordnet Argument- und Optionsnamen den Parameternamen zu. Der Standardwert für uppercase entspricht der Abwesenheit der Option.

Der Handler gibt einen String zurück. Application.main() gibt diesen Wert bei erfolgreichen Läufen aus.

Der Einstiegspunkt​

if __name__ == "__main__":
sys.exit(app.main())

Application.main() ist der einfachste Einstiegspunkt für ausführbare Programme. Er liest sys.argv[1:], gibt normale Ergebnisse aus, meldet quickli-Laufzeitfehler und liefert einen Exit-Code zurück.

Application.run(argv) akzeptiert weiterhin explizite Tokens, wenn du diese niedrigere, testfreundliche Grenze direkt verwenden willst. Application.run() liest ebenfalls standardmäßig sys.argv[1:], wenn du es ohne Argumente aufrufst. Übergib eine explizite Liste zum Überschreiben oder setze auto_sys_argv=False, um das automatische Lesen zu deaktivieren.

Die Hilfeausgabe erkunden​

Starte das Programm ohne Argumente:

python hello.py

quickli erzeugt den Nutzungstext aus den registrierten Argumenten, Optionen und Hilfetexten.

Was du als Nächstes ausprobieren kannst​

  • Füge eine zweite Option hinzu, etwa --shout, und ändere das Nachrichtenformat.
  • Mache das Argument name mit required=False und default="world" optional.
  • Lies Anleitung 2: Dateibetrachter, um globale Optionen, mehrere Dateiargumente und Pfadvalidierung kennenzulernen.