CLI-Framework für Swift: Erstellung von Konsolen-Dienstprogrammen für iOS/macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CLI-Framework für Swift: Erstellung von Konsolen-Dienstprogrammen für iOS und macOS



Die Entwicklung von Konsolenanwendungen (CLI — Command Line Interface) für das Apple-Ökosystem war lange Zeit eine Domäne von Python, Ruby oder Bash. Mit dem Aufkommen von Swift und seinen leistungsstarken Werkzeugen, einschließlich Swift Package Manager (SPM), besteht nun jedoch die Möglichkeit, schnelle, typisierte und leicht wartbare Konsolen-Dienstprogramme in der nativen Sprache für iOS/macOS zu erstellen. In diesem Artikel betrachten wir das wichtigste Framework für den Bau von CLIs in Swift — Apple's ArgumentParser — sowie alternative Lösungen im Detail.



Was ist ein CLI-Framework für Swift?



Ein CLI-Framework ist eine Bibliothek, die Routineaufgaben wie das Parsen von Kommandozeilenargumenten, die Generierung von Hilfetexten, die Fehlerbehandlung und die Organisation von Befehlen übernimmt. In der Swift-Welt ist der De-facto-Standard ArgumentParser, entwickelt von Apple und Teil von Swift Open Source. Es ermöglicht die deklarative Beschreibung der Schnittstelle Ihres Dienstprogramms, während das Framework den Rest automatisch erledigt.



Hauptfunktionen von ArgumentParser:

  • Deklarative Definition von Befehlen — Sie beschreiben die Struktur, das Framework parst die Argumente selbstständig.
  • Automatische Hilfe — Die Flags --help und -h werden automatisch generiert.
  • Unterstützung für verschachtelte Befehle (wie in git oder swift).
  • Typvalidierung — Wenn eine Zahl erwartet wird, aber eine Zeichenkette übergeben wird, wird eine verständliche Fehlermeldung ausgegeben.
  • Integration mit SPM — Es genügt, eine Abhängigkeit in Package.swift hinzuzufügen.


Installation und Einrichtung



Für die Arbeit benötigen Sie Swift 5.5+ (empfohlen wird 5.7 oder neuer). Erstellen Sie ein neues Konsolenprojekt über SPM:



mkdir MyCLIcd MyCLIswift package init --type executable


Bearbeiten Sie dann die Datei Package.swift, indem Sie die Abhängigkeit zu ArgumentParser hinzufügen:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyCLI", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLI", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])


Aktualisieren Sie nun die Abhängigkeiten und öffnen Sie das Projekt:



swift package updateopen Package.swift   # öffnet in Xcode


Erstellung des ersten Befehls



Erstellen Sie eine Datei main.swift (oder Sources/MyCLI/main.swift) mit folgendem Inhalt:



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "Benutzer begrüßen", discussion: "Dieser Befehl gibt eine personalisierte Begrüßung aus." )

@Argument(help: "Benutzername") var name: String

@Option(name: .shortAndLong, help: "Anzahl der Wiederholungen") var count: Int = 1

@Flag(name: .shortAndLong, help: "Version anzeigen") var verbose: Bool = false

mutating func run() throws { if verbose { print("Version 1.0.0") } for _ in 0..<count { print("Hallo, \\(name)!") } }}

Greet.main()


Kompilieren und starten Sie nun:



swift run MyCLI Swift --count 3# Ausgabe:# Hallo, Swift!# Hallo, Swift!# Hallo, Swift!

swift run MyCLI --help# Usage: MyCLI <name> [--count <count>] [--verbose]# Benutzer begrüßen# ...


Verschachtelte Befehle (Unterbefehle)



Für die Erstellung komplexer Dienstprogramme (wie

Empfehlungen