Qu'est-ce que Clap et pourquoi en a-t-on besoin ?
\n\nClap (Command Line Argument Parser) est une bibliothèque puissante, rapide et pratique pour analyser les arguments de la ligne de commande en langage Rust. Elle permet aux développeurs de définir facilement quels arguments, drapeaux, options et sous-commandes leur application doit accepter, de générer automatiquement l'aide (--help), de vérifier les types de données et de gérer les erreurs de saisie.
Pourquoi a-t-on besoin de Clap ? Au lieu d'analyser manuellement std::env::args() et d'écrire des dizaines de lignes de code pour la validation, Clap fait tout le travail à votre place. Vous décrivez simplement la structure de votre CLI, et la bibliothèque se charge de l'analyse, de la génération des messages d'erreur et du formatage des indications. Clap prend en charge :
- \n
- Les arguments positionnels (obligatoires et optionnels). \n
- Les options nommées (drapeaux) avec des noms courts et longs. \n
- Les sous-commandes (comme dans
git commit). \n - L'auto-complétion pour les shells (bash, zsh, fish, PowerShell). \n
- La validation des valeurs, les valeurs par défaut, les valeurs multiples et bien plus encore. \n
Clap est la norme de facto pour la création d'applications CLI dans l'écosystème Rust. Il est utilisé dans des projets célèbres tels que cargo, ripgrep (rg), fd et bien d'autres.
Installation
\n\nClap est une bibliothèque pour Rust, elle s'installe donc via le gestionnaire de paquets cargo. Ajoutez la ligne suivante à votre fichier Cargo.toml :
[dependencies]\nclap = { version = "4.5", features = ["derive"] }\n\nNous recommandons d'utiliser les macros derive (fonctionnalité derive), car c'est la manière la plus moderne et pratique de travailler avec Clap. Si vous n'avez besoin que des fonctionnalités de base sans derive, vous pouvez écrire :
[dependencies]\nclap = "4.5"\n\nAprès avoir ajouté la dépendance, exécutez la commande cargo build pour télécharger et compiler la bibliothèque.
Démarrage rapide avec un exemple de code
\n\nCréons une application simple qui accepte un nom d'utilisateur et un drapeau de salutation optionnel. Créez un nouveau projet :
\n\ncargo new hello_clap\ncd hello_clap\n\nRemplacez le contenu de src/main.rs par le code suivant :
use clap::Parser;\n\n/// Programme simple pour saluer\n#[derive(Parser)]\n#[command(name = "greeter")]\n#[command(about = "Salue l'utilisateur", long_about = None)]\nstruct Cli {\n /// Nom de l'utilisateur\n name: String,\n\n /// Nombre de fois pour répéter le salut\n #[arg(short = 'c', long = "count", default_value_t = 1)]\n count: u8,\n}\n\nfn main() {\n let cli = Cli::parse();\n\n for _ in 0..cli.count {\n println!("Bonjour, {} !", cli.name);\n }\n}\n\nExécutez maintenant le programme :
\n\ncargo run -- Monde\n# Sortie : Bonjour, Monde !\n\ncargo run -- Monde -c 3\n# Sortie :\n# Bonjour, Monde !\n# Bonjour, Monde !\n# Bonjour, Monde !\n\ncargo run -- --help\n# Sortie de l'aide\n\nComme vous pouvez le voir, Clap a automatiquement généré l'aide, traité les arguments et effectué la vérification des types (si vous passez -c sans nombre, une erreur sera générée).
Méthodes et fonctions principales de Clap
\n\nExaminons les méthodes et attributs clés fournis par Clap. Nous utiliserons l'approche avec les macros derive, car elle est la plus populaire.
\n\n1. #[derive(Parser)]
\nCe qu'il fait : Transforme votre structure en analyseur de ligne de commande. C'est la macro principale par laquelle tout commence. Elle implémente automatiquement le trait Parser pour votre structure.
Paramètres : Attributs de la structure (#[command(...)]) et des champs (#[arg(...)]).
Exemple :
\nuse clap::Parser;\n\n#[derive(Parser)]\n#[command(name = "myapp")]\nstruct C Aussi dans la bibliothèque
Pimple PHP : guide complet avec exemples pratiques
Travailler avec Kafka en JavaScript (Node.js) : la bibliothèque node-rdkafka
gRPC pour C++ : bibliothèques, configuration et exemples de code
Génération de PDF en TypeScript : aperçu des bibliothèques et outils
Rate limiting en C++ : bibliothèques et outils pour contrôler les requêtes