Framework CLI pour Swift : création d'utilitaires console sur iOS/macOS

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 : création d'utilitaires console sur iOS et macOS



Le développement d'applications console (CLI — Command Line Interface) pour l'écosystème Apple est longtemps resté l'apanage de Python, Ruby ou Bash. Cependant, avec l'arrivée de Swift et de sa puissante boîte à outils, incluant Swift Package Manager (SPM), il est désormais possible de créer des utilitaires console rapides, typés et facilement maintenables dans le langage natif d'iOS/macOS. Dans cet article, nous examinerons en détail le framework principal pour construire des CLI en Swift — Apple's ArgumentParser, ainsi que des solutions alternatives.



Qu'est-ce qu'un framework CLI pour Swift ?



Un framework CLI est une bibliothèque qui prend en charge les tâches courantes d'analyse des arguments de ligne de commande, de génération d'aide, de gestion des erreurs et d'organisation des commandes. Dans le monde Swift, le standard de facto est ArgumentParser, développé par Apple et faisant partie de Swift Open Source. Il permet de décrire de manière déclarative l'interface de votre utilitaire, et tout le reste est fait automatiquement.



Principales fonctionnalités de ArgumentParser :

  • Définition déclarative des commandes — vous décrivez la structure, et le framework analyse lui-même les arguments.
  • Aide automatique — les drapeaux --help et -h sont générés automatiquement.
  • Prise en charge des commandes imbriquées (comme dans git ou swift).
  • Validation des types — si un nombre est attendu mais qu'une chaîne est fournie, une erreur claire est affichée.
  • Intégration avec SPM — il suffit d'ajouter une dépendance dans Package.swift.


Installation et configuration



Pour travailler, vous aurez besoin de Swift 5.5+ (5.7 ou plus récent recommandé). Créez un nouveau projet console via SPM :



mkdir MyCLIcd MyCLIswift package init --type executable


Ensuite, modifiez Package.swift en ajoutant une dépendance à ArgumentParser :



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


Maintenant, mettez à jour les dépendances et ouvrez le projet :



swift package updateopen Package.swift   # ouvrira dans Xcode


Création de la première commande



Créez un fichier main.swift (ou Sources/MyCLI/main.swift) avec le contenu suivant :



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "Salutation de l'utilisateur", discussion: "Cette commande affiche une salutation personnalisée." )

@Argument(help: "Nom de l'utilisateur") var name: String

@Option(name: .shortAndLong, help: "Nombre de répétitions") var count: Int = 1

@Flag(name: .shortAndLong, help: "Afficher la version") var verbose: Bool = false

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

Greet.main()


Maintenant, compilez et exécutez :



swift run MyCLI Swift --count 3# Sortie :# Bonjour, Swift!# Bonjour, Swift!# Bonjour, Swift!

swift run MyCLI --help# Usage: MyCLI <name> [--count <count>] [--verbose]# Salutation de l'utilisateur# ...


Commandes imbriquées (sous-commandes)



Pour créer des utilitaires complexes (comme

Recommendations