CLI-Dienstprogramme in Swift: Erstellen von Befehlszeilenwerkzeugen von Grund auf

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

Ihr erstes CLI in Swift: Von der Idee zum fertigen Werkzeug

\n\n

Haben Sie sich jemals gefragt, wie die praktischen Dienstprogramme im Terminal – curl, git, brew – erstellt werden? Es stellt sich heraus, dass das Schreiben eines eigenen CLI-Dienstprogramms in Swift nicht schwieriger ist als das Erstellen einer einfachen iOS-App. Darüber hinaus ist Swift dafür ideal geeignet: Es ist schnell, speichersicher und funktioniert sowohl auf macOS als auch auf Linux hervorragend.

\n\n

In diesem Artikel erstellen wir von Grund auf ein vollwertiges Konsolenwerkzeug, das Argumente parst, farbigen Text ausgibt und sogar Fehler behandelt. Sie erfahren, wie Sie das Projekt über den Swift Package Manager einrichten, die leistungsstarke Bibliothek ArgumentParser einbinden und das Dienstprogramm für die Veröffentlichung in Homebrew vorbereiten. Bereit? Los geht's!

\n\n

Warum Swift für CLI großartig ist

\n\n

Wenn es um die Erstellung von Befehlszeilenwerkzeugen geht, denken viele sofort an Python, Bash oder Go. Aber Swift ist ein Geheimtipp, der überrascht:

\n\n
    \n
  • Geschwindigkeit auf C-Niveau – Ihr Dienstprogramm wird fliegen.
  • \n
  • Sichere Speicherverwaltung – keine Segfaults oder Speicherlecks.
  • \n
  • Plattformunabhängigkeit – Swift funktioniert hervorragend auf Linux, sodass Ihr CLI sogar auf Servern ausgeführt werden kann.
  • \n
  • Moderne Syntax – Der Code liest sich wie gute Prosa.
  • \n
  • Riesiges Ökosystem – Der Swift Package Manager (SPM) bietet Zugriff auf Tausende von Bibliotheken.
  • \n
\n\n

Übrigens: Wenn Sie bereits in Python schreiben und etwas Neues für CLI ausprobieren möchten, ist Swift eine ausgezeichnete Wahl: Sie erhalten ein natives Binärprogramm ohne Abhängigkeiten und mit minimalem Speicherverbrauch.

\n\n

Projekteinrichtung: Swift Package Manager

\n\n

Als Erstes erstellen wir ein neues Projekt. Öffnen Sie das Terminal und führen Sie Folgendes aus:

\n\n
mkdir MyCLI\ncd MyCLI\nswift package init --type executable
\n\n

Der Befehl erstellt eine Standard-SPM-Struktur. Beachten Sie die Datei Package.swift – das Herz Ihres Projekts. Bearbeiten wir sie, um eine Abhängigkeit von Apple/Swift ArgumentParser hinzuzufügen:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyCLI",\n    dependencies: [\n        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyCLI",\n            dependencies: [\n                .product(name: "ArgumentParser", package: "swift-argument-parser")\n            ]\n        )\n    ]\n)
\n\n

Führen Sie nun swift build aus. SPM lädt die Bibliothek herunter und erstellt das Projekt. Wenn alles erfolgreich war – sind Sie bereit, Code zu schreiben!

\n\n

Ersten Befehl schreiben: Hello World auf Steroiden

\n\n

Öffnen wir Sources/MyCLI/main.swift und schreiben einen einfachen Befehl, der eine Begrüßung ausgibt. Aber nicht einfach "Hello, World!", sondern mit Argumenten:

\n\n
import ArgumentParser\n\nstruct HelloCommand: ParsableCommand {\n    static let configuration = CommandConfiguration(\n        commandName: "hello",\n        abstract: "Gibt eine Begrüßung aus",\n        discussion: "Verwenden Sie diesen Befehl, um die Welt oder eine bestimmte Person zu begrüßen."\n    )\n\n    @Argument(help: "Name der Person, die begrüßt werden soll")\n    var name: String = "World"\n\n    @Option(name: .shortAndLong, help: "Anzahl der Wiederholungen")\n    var count: Int = 1\n\n    func run() throws {\n        for _ in 0..<count {\n            print("Hallo, \\(name)! 👋")\n        }\n    }\n}\n\nHelloCommand.main()
\n\n

Starten Sie: swift run MyCLI hello --count 3 "iOS Developer". Sie sehen:

\n\n
Hallo, iOS Developer! 👋\nHallo, iOS Developer! 👋\nHallo, iOS Developer! 👋
\n\n

Beachten Sie: Argumen

Blogs

Buchempfehlungen