CLI-Framework für Swift (iOS/macOS): ArgumentParser
In der Welt der Entwicklung für das Apple-Ökosystem entsteht häufig die Notwendigkeit, nicht nur grafische Anwendungen, sondern auch leistungsstarke Konsolen-Dienstprogramme zu erstellen. Ob Build-Automatisierung, Datenverarbeitung oder die Erstellung von Hilfstools für iOS/macOS – ohne eine hochwertige CLI (Command Line Interface) kommt man nicht aus. Für diese Zwecke bietet Apple das offizielle Framework ArgumentParser an, das Teil des Swift Package Managers ist. Es ist ein modernes, typsicheres und deklaratives Tool, mit dem Sie mit minimalem Aufwand Konsolenanwendungen in Swift erstellen können.
Im Gegensatz zum einfachen Parsen von Argumenten über CommandLine.arguments bietet ArgumentParser einen strukturierten Ansatz: Sie beschreiben Befehle, Flags und Optionen als Eigenschaften Ihrer Strukturen, und das Framework generiert automatisch Hilfe, verarbeitet Fehler und validiert die Eingabe. Lassen Sie uns untersuchen, wie Sie dieses Framework für macOS und iOS (über den Swift Package Manager) verwenden.
Installation und Einbindung
ArgumentParser erfordert keine separate Installation – es ist ab Swift 5.5 in der Standardbibliothek von Swift verfügbar. Um es in Ihrem Projekt zu verwenden, fügen Sie die Abhängigkeit in Ihre Package.swift ein:
// swift-tools-version:5.7import PackageDescription
let package = Package( name: "MyCLI", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLI", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])Für iOS-Projekte kann das Framework über den Swift Package Manager in Xcode hinzugefügt werden, indem dasselbe Repository angegeben wird. Es ist jedoch zu beachten, dass CLI-Anwendungen normalerweise für macOS erstellt werden, die Bibliothek jedoch auch in iOS-Anwendungen für das interne Parsen von Zeichenfolgen verwendet werden kann.
Grundlegende Konzepte
ArgumentParser basiert auf drei Schlüsselkonzepten:
- Befehle (
ParsableCommand) – das Hauptelement, das einen einzelnen CLI-Befehl darstellt. Jeder Befehl ist eine Struktur, die das ProtokollParsableCommandimplementiert. - Argumente (
@Argument) – Positionsparameter, die für die Eingabe erforderlich sind. - Optionen (
@Option) – benannte Parameter mit langen (--name) und kurzen (-n) Flags. - Flags (
@Flag) – boolesche Schalter (--verbose, --quiet).
Beispiel: Erstellung eines einfachen CLI-Rechners
Erstellen wir eine Konsolenanwendung für macOS, die grundlegende arithmetische Operationen ausführt:
import ArgumentParser
struct Calculator: ParsableCommand { static let configuration = CommandConfiguration( commandName: "calc", abstract: "Einfacher Taschenrechner für die Kommandozeile", discussion: "Unterstützt Addition, Subtraktion, Multiplikation und Division." )
@Argument(help: "Erste Zahl") var firstNumber: Double
@Argument(help: "Zweite Zahl") var secondNumber: Double
@Option(name: [.short, .long], help: "Operation: add, sub, mul, div") var operation: String = "add"
@Flag(name: [.short, .long], help: "Ausführliche Ausgabe") var verbose: Bool = false
mutating func run() throws { let result: Double switch operation { case "add": result = firstNumber + secondNumber case "sub": result = firstNumber - secondNumber case "mul": result = firstNumber * secondNumber case "div": guard secondNumber != 0 else { throw ValidationError("Division durch Null!") } result = firstNumber / s Auch in der Bibliothek
PDF-Berichterstellung mit C# (.NET) mit QuestPDF
Dependency Injection Container für Swift (iOS/macOS): Swinject
xUnit / NUnit für C# (.NET): Vollständiger Leitfaden mit Beispielen