Swift CLI avec ArgumentParser : création d'outils console puissants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Framework CLI pour Swift (iOS/macOS) : ArgumentParser



Dans le monde du développement pour l'écosystème Apple, il est souvent nécessaire de créer non seulement des applications graphiques, mais aussi des utilitaires console puissants. Que ce soit pour l'automatisation de la construction, le traitement de données ou la création d'outils auxiliaires pour iOS/macOS — un CLI (Command Line Interface) de qualité est indispensable. Pour ces besoins, Apple propose le framework officiel ArgumentParser, qui fait partie de Swift Package Manager. C'est un outil moderne, typé et déclaratif qui permet de créer des applications console en Swift avec un minimum d'efforts.



Contrairement à l'analyse simple des arguments via CommandLine.arguments, ArgumentParser offre une approche structurée : vous décrivez les commandes, les drapeaux et les options sous forme de propriétés de vos structures, et le framework génère automatiquement l'aide, gère les erreurs et valide les entrées. Voyons comment utiliser ce framework pour macOS et iOS (via Swift Package Manager).



Installation et intégration



ArgumentParser ne nécessite pas d'installation séparée — il est disponible dans la bibliothèque standard de Swift (à partir de Swift 5.5). Pour l'utiliser dans votre projet, ajoutez la dépendance dans Package.swift :



// 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") ] ) ])


Pour les projets iOS, le framework peut être ajouté via Swift Package Manager dans Xcode, en indiquant le même dépôt. Cependant, il faut noter que les applications CLI sont généralement créées pour macOS, mais la bibliothèque peut également être utilisée dans des applications iOS pour l'analyse interne de chaînes.



Concepts de base



ArgumentParser repose sur trois entités clés :



  • Commandes (ParsableCommand) — l'élément principal, représentant une commande CLI. Chaque commande est une structure implémentant le protocole ParsableCommand.
  • Arguments (@Argument) — paramètres positionnels, obligatoires à saisir.
  • Options (@Option) — paramètres nommés avec des drapeaux long (--name) et court (-n).
  • Drapeaux (@Flag) — interrupteurs booléens (--verbose, --quiet).


Exemple : création d'un calculateur CLI simple



Créons une application console pour macOS qui effectue des opérations arithmétiques de base :



import ArgumentParser

struct Calculator: ParsableCommand { static let configuration = CommandConfiguration( commandName: "calc", abstract: "Calculateur simple pour la ligne de commande", discussion: "Prend en charge l'addition, la soustraction, la multiplication et la division." )

@Argument(help: "Premier nombre") var firstNumber: Double

@Argument(help: "Deuxième nombre") var secondNumber: Double

@Option(name: [.short, .long], help: "Opération : add, sub, mul, div") var operation: String = "add"

@Flag(name: [.short, .long], help: "Sortie détaillée") 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 par zéro !") } result = firstNumber / s

Recommendations