Ein Kommandozeilenprogramm in Swift erstellen

Swift ist die bedeutendste Programmiersprache für das Erstellen von Apps für die Geräte im Apple-Kosmos. Darüber hinaus kann Swift aber auch für das Erstellen von Kommandozeilenprogrammen (Command Line Tools) verwendet werden. Dieser Blogbeitrag erklärt die dafür erforderlichen ersten Schritte. Genauer gesagt geht es um Swifts Packet Manager und Swifts ArgumentParser, die für diesen Zweck zur Anwendung kommen.

Swifts Packet Manager

Am Anfang steht die Erstellung eines neuen Projekts mithilfe des Swift Packet Managers (SPM). Der Name des Kommandozeilenprogramms soll in diesem Beispiel example sein.

  1. Startet das Terminal.
  2. Erstellt ein neues Verzeichnis: mkdir example
  3. Wechselt in dieses Verzeichnis: cd example
  4. Startet die Paket-Initialisierung: swift package init --name example --type executable

Nun wird eine Verzeichnisstruktur angelegt. Von Interesse sind die Dateien „Package.swift und „main.swift“.

Werfen wir zunächst einen Blick in die Datei „Package.swift“. Im Terminal kann das Projekt mit

$ open Package.swift

geöffnet werden, was dazu führt, dass Xcode gestartet wird.

Von Interesse ist für uns folgender Code:

let package = Package(
    name: "example",
    dependencies: [

    ],
    targets: [
        ...
    ]
)

Denn hier müssen die dependencies und targets angepasst werden, was uns direkt zur nächsten Überschrift bringt.

Swifts ArgumentParser

Bei dem ArgumentParser handelt es sich um ein Swift-Paket, das durch die Anpassung des Codes in der Datei „Package.swift“ hinzugefügt werden kann.

dependencies: [
    .package(url: "https://github.com/apple/swift-argument-parser", from: "1.1.2")
],
targets: [
    .executableTarget(
        name: "example",
        dependencies: [.product(name: "ArgumentParser", package: "swift-argument-parser")]),
    .testTarget(
        name: "exampleTests",
        dependencies: ["example"]),
]

Wie Ihr sehen könnt, wurde bei dependencies folgendes .package hinzugefügt:

.package(url: "https://github.com/apple/swift-argument-parser", from: "1.1.2")

Zum Zeitpunkt der Erstellung dieses Tutorials lag der ArgumentParser in Version 1.1.2 vor. Vermutlich müsst Ihr dies anpassen. Die jeweils aktuellste Version findet Ihr bei Github.

Außerdem wurde targets um folgenden Code ergänzt:

dependencies: [.product(name: "ArgumentParser", package: "swift-argument-parser")]),

Sobald die Änderungen gespeichert wurden, erscheint im Xcode-Navigator auf der linken Seite der „swift-argument-parser“.

Package Dependencies in the Xcode Navigator
Package Dependencies im Xcode-Navigator

Jetzt kann das eigentliche Programm geschrieben werden. Einstiegspunkt ist dabei die Datei „main.swift“, die sich im Verzeichnis „Sources/example“ befindet. In der Dokumentation zum ArgumentParser findet Ihr entsprechende Code-Beispiele.

Weiterführende Links