CLI-Framework für Swift: Leistungsstarke Konsolen-Dienstprogramme für iOS und macOS erstellen
Swift ist nicht nur eine Sprache für mobile Apps. Mit dem Aufkommen von Swift Package Manager (SPM) und Frameworks wie ArgumentParser haben Entwickler die Möglichkeit, vollwertige Konsolen-Tools für macOS und sogar für iOS (im Rahmen von Server- oder CI/CD-Prozessen) zu erstellen. CLI (Command Line Interface) Frameworks für Swift ermöglichen das Parsen von Befehlszeilenargumenten, die Verarbeitung von Flags, Optionen und Unterbefehlen sowie die automatische Generierung von Hilfetexten.
In diesem Artikel werden wir eines der beliebtesten und offiziellen CLI-Frameworks im Detail analysieren – Swift ArgumentParser (entwickelt von Apple). Sie erfahren, wie Sie es über SPM installieren, ein einfaches Konsolen-Tool schreiben, Unterbefehle und Argumente hinzufügen und Codebeispiele für reale Aufgaben sehen.
Was ist ein CLI-Framework für Swift?
Ein CLI-Framework ist eine Bibliothek, die die Routinearbeit des Parsens einer Befehlszeile übernimmt. Anstatt manuell Schleifen über CommandLine.arguments zu schreiben, beschreiben Sie die Struktur des Befehls deklarativ: welche Argumente erforderlich sind, welche optional sind, welche Flags unterstützt werden. Das Framework generiert selbstständig die Hilfe (--help) und behandelt Eingabefehler.
Hauptfunktionen von Swift ArgumentParser:
- Deklarative Beschreibung von Argumenten und Optionen
- Automatische Generierung von Hilfe und Version
- Unterstützung für Unterbefehle (wie bei
git commitoderswift build) - Typvalidierung (Int, String, Double und benutzerdefinierte Typen)
- Integration mit SPM und Xcode
Installation über Swift Package Manager
Fügen Sie die Abhängigkeit in Ihre Package.swift Ihres Projekts hinzu:
// swift-tools-version:5.9import PackageDescription
let package = Package( name: "MyCLITool", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLITool", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])Führen Sie nun swift build aus – die Bibliothek wird heruntergeladen und kompiliert.
Den ersten Befehl schreiben
Erstellen wir ein einfaches Dienstprogramm, das den Benutzer mit Namen und Alter begrüßt.
import ArgumentParser
struct Greet: ParsableCommand { @Argument(help: "Name des Benutzers") var name: String
@Option(name: .shortAndLong, help: "Alter") var age: Int?
mutating func run() throws { if let age = age { print("Hallo, \\(name)! Du bist \\(age) Jahre alt.") } else { print("Hallo, \\(name)!") } }}
Greet.main()Starten Sie die kompilierte Binärdatei:
./MyCLITool "Anna" --age 25# Ausgabe: Hallo, Anna! Du bist 25 Jahre alt.
./MyCLITool "Max"# Ausgabe: Hallo, Max!Die automatisch generierte Hilfe (--help) zeigt alle Argumente und Optionen an.
Unterbefehle: Struktur wie in echten Dienstprogrammen
Häufig haben CLI-Tools mehrere Unterbefehle: create, delete, list. ArgumentParser unterstützt dies von Haus aus.
import ArgumentParser
struct TaskManager: ParsableCommand { static var configuration = CommandConfiguration( subcommands: [Add.self, List.self, Delete.self] )}
struct Add: ParsableCommand { @Argument(help: "Aufgabentext") var text: String
func run() { print("Aufgabe hinzugefügt: \\(text)") }}
struct List: ParsableCommand { func run() { print("Aufgabenliste:")