Framework CLI pour Swift : créer des utilitaires console pour 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éer des utilitaires console puissants pour iOS et macOS



Swift n'est pas seulement un langage pour applications mobiles. Avec l'arrivée de Swift Package Manager (SPM) et de frameworks comme ArgumentParser, les développeurs ont la possibilité de créer des outils console complets pour macOS et même pour iOS (dans le cadre de processus serveur ou CI/CD). Les frameworks CLI (Command Line Interface) pour Swift permettent d'analyser les arguments de la ligne de commande, de traiter les drapeaux, les options et les sous-commandes, ainsi que de générer une aide automatique.



Dans cet article, nous allons détailler l'un des frameworks CLI les plus populaires et officiels — Swift ArgumentParser (développé par Apple). Vous apprendrez à l'installer via SPM, à écrire un outil console simple, à ajouter des sous-commandes et des arguments, et vous verrez des exemples de code pour des tâches réelles.



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



Un framework CLI est une bibliothèque qui prend en charge le travail fastidieux d'analyse de la ligne de commande. Au lieu d'écrire manuellement des boucles sur CommandLine.arguments, vous décrivez la structure de la commande de manière déclarative : quels arguments sont obligatoires, lesquels sont optionnels, quels drapeaux sont pris en charge. Le framework génère lui-même l'aide (--help) et gère les erreurs de saisie.



Principales fonctionnalités de Swift ArgumentParser :

  • Description déclarative des arguments et options
  • Génération automatique de l'aide et de la version
  • Prise en charge des sous-commandes (comme dans git commit ou swift build)
  • Validation des types (Int, String, Double et personnalisés)
  • Intégration avec SPM et Xcode


Installation via Swift Package Manager



Ajoutez la dépendance dans le fichier Package.swift de votre projet :



// swift-tools-version:5.9import PackageDescription

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


Exécutez maintenant swift build — la bibliothèque sera téléchargée et compilée.



Écrivons notre première commande



Créons un utilitaire simple qui salue l'utilisateur par son nom et son âge.



import ArgumentParser

struct Greet: ParsableCommand { @Argument(help: "Nom de l'utilisateur") var name: String

@Option(name: .shortAndLong, help: "Âge") var age: Int?

mutating func run() throws { if let age = age { print("Bonjour, \\(name) ! Tu as \\(age) ans.") } else { print("Bonjour, \\(name) !") } }}

Greet.main()


Exécutez le binaire compilé :

./MyCLITool "Anna" --age 25# Sortie : Bonjour, Anna ! Tu as 25 ans.

./MyCLITool "Maxime"# Sortie : Bonjour, Maxime !


L'aide générée automatiquement (--help) affichera tous les arguments et options.



Sous-commandes : une structure comme dans les vrais utilitaires



Souvent, les outils CLI ont plusieurs sous-commandes : create, delete, list. ArgumentParser les prend en charge nativement.



import ArgumentParser

struct TaskManager: ParsableCommand { static var configuration = CommandConfiguration( subcommands: [Add.self, List.self, Delete.self] )}

struct Add: ParsableCommand { @Argument(help: "Texte de la tâche") var text: String

func run() { print("Tâche ajoutée : \\(text)") }}

struct List: ParsableCommand { func run() { print("Liste des tâches :")

Recommendations