Einleitung
Die Automatisierung von Routineaufgaben ist ein wesentlicher Bestandteil der modernen Softwareentwicklung. Ob Projekt-Build, Deployment, Code-Formatierung, Migrationen oder Tests – all diese Prozesse sollten spezialisierten Tools überlassen werden. Für Python-Entwickler bietet sich hier die Bibliothek Invoke als universelle Lösung an.
Invoke ist eine leistungsstarke Python-Bibliothek zur Erstellung von Kommandozeilen-Tools, mit denen sich Aufgaben als normale Python-Funktionen beschreiben lassen. Sie bietet eine einfache, aber funktionale Möglichkeit, automatisierte Befehle zu organisieren – ähnlich wie die bekannten Tools make oder Fabric, jedoch in reinem Python geschrieben.
Was ist Invoke?
Invoke ist eine Python-Bibliothek zur Beschreibung und Ausführung von Aufgaben im Kommandozeilen-Stil, die speziell zur Automatisierung von Entwicklungsprozessen entwickelt wurde. Sie wurde aus Fabric 2 als eigenständige Komponente für den Bau von CLI-Schnittstellen und Aufgabenautomatisierung ausgegliedert.
Die wichtigsten Vorteile von Invoke
Die Bibliothek bietet Entwicklern folgende Möglichkeiten:
- Deklarative Aufgabenbeschreibung – Aufgaben werden als normale Python-Funktionen mit dem Decorator
@taskdefiniert - Automatische CLI-Generierung – Die Kommandozeilen-Schnittstelle wird automatisch aus dem Code erstellt
- Umfangreiche Argumentunterstützung – Integrierte Unterstützung für Argumente, Optionen und Hilfetexte
- Shell-Integration – Komfortable Arbeit mit Shell-Befehlen über das Context-Objekt
- Flexible Konfiguration – Unterstützung für Namespaces, Konfigurationsdateien und Umgebungsvariablen
- Erweiterbarkeit – Möglichkeit zur Erstellung komplexer Pipelines und Aufgabenketten
Installation und erste Einrichtung
Bibliothek installieren
Installiere Invoke mit pip:
pip install invoke
Nach der Installation steht der Befehl inv zur Verfügung – eine Alternative zu make, die jedoch mit Python-Code arbeitet.
Installation prüfen
Überprüfe die korrekte Installation mit:
inv --version
Aufgabenstruktur und grundlegende Syntax
Erste Aufgabe erstellen
Ein einfaches Beispiel für eine Aufgabe sieht so aus:
from invoke import task
@task
def hello(c):
print("Hallo, Welt!")
Die Aufgabe wird wie folgt ausgeführt:
inv hello
Das Context-Objekt
Jede Aufgabe erhält ein Context-Objekt (meist als c bezeichnet), über das Shell-Befehle ausgeführt, die Konfiguration verwaltet und auf verschiedene Hilfsfunktionen zugegriffen werden kann:
@task
def build(c):
c.run("python setup.py sdist")
c.run("python setup.py bdist_wheel")
Der @task-Decorator
Der Decorator @task kennzeichnet eine Funktion als CLI-Aufgabe. Er unterstützt zahlreiche Parameter zur Verhaltensanpassung:
@task(help={"name": "Benutzername für die Begrüßung"})
def greet(c, name="Gast"):
print(f"Hallo, {name}!")
Ausführung mit Parametern:
inv greet --name=Max
Arbeiten mit Argumenten und Optionen
Pflichtargumente
Für Pflichtargumente verwendest du Funktionsparameter ohne Standardwerte:
@task
def say(c, word):
print(f"Gesagt: {word}")
inv say --word="Hallo, Welt!"
Optionale Argumente
Optionale Argumente werden mit Stan
Auch in der Bibliothek
colly für Go: Vollständiges Tutorial & Leitfaden
ts-mockito für TypeScript: Komplettguide mit Beispielen
Datenvalidierung in C# (.NET): Bibliotheken, Attribute und FluentValidation
PDF-Erstellung in C++: Bibliotheken, Werkzeuge und Codebeispiele
Arbeit mit YAML in C++: Bibliotheken yaml-cpp und rapidyaml