Clikt : Un framework CLI puissant pour Kotlin avec une syntaxe déclarative

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

Clikt : Un framework CLI puissant pour Kotlin



Clikt est un framework moderne et léger pour créer des applications console (CLI) en langage Kotlin. Contrairement à de nombreuses autres bibliothèques, Clikt utilise une approche déclarative, permettant de décrire la structure des commandes et leurs paramètres à l'aide d'annotations simples et d'expressions lambda. Cela rend le code propre, lisible et facile à maintenir. La bibliothèque est idéale aussi bien pour de petits utilitaires que pour des interfaces en ligne de commande complexes à plusieurs niveaux.



Fonctionnalités clés de Clikt



  • Syntaxe déclarative : Définition des commandes, options et arguments via un DSL (Domain Specific Language) ou des annotations.
  • Génération automatique d'aide : Clikt crée automatiquement un message --help beau et structuré basé sur vos définitions.
  • Prise en charge des commandes imbriquées : Créez des hiérarchies de commandes (par exemple, git commit, git push) avec un mécanisme simple de sous-commandes.
  • Validation des valeurs : Mécanismes intégrés pour vérifier les types, plages, formats et conditions personnalisées.
  • Autocomplétion : Prise en charge native de la génération de scripts d'autocomplétion pour Bash, Zsh et Fish.
  • Testabilité : Outils pratiques pour tester les applications CLI sans exécution réelle dans le terminal.


Installation et configuration



Pour commencer, ajoutez la dépendance à votre fichier build.gradle.kts :



repositories {    mavenCentral()}

dependencies { implementation("com.github.ajalt.clikt:clikt:4.4.0")}


Pour Maven, utilisez :



<dependency>    <groupId>com.github.ajalt.clikt</groupId>    <artifactId>clikt</artifactId>    <version>4.4.0</version></dependency>


Exemple de base : salutation



Créons une commande simple qui prend un nom d'utilisateur et un indicateur optionnel pour saluer dans différentes langues.



import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.flagimport com.github.ajalt.clikt.parameters.options.option

class Greet : CliktCommand() { val name: String by argument(help = "Nom d'utilisateur") val formal: Boolean by option("--formal", "-f", help = "Salutation formelle").flag()

override fun run() { val greeting = if (formal) "Bonjour" else "Salut" echo("$greeting, $name!") }}

fun main(args: Array<String>) = Greet().main(args)


Exécution en ligne de commande :



$ kotlin greet.kts JeanSalut, Jean!

$ kotlin greet.kts --formal JeanBonjour, Jean!

$ kotlin greet.kts --helpUsage: greet [<options>] <name>

Nom d'utilisateur

Options: -f, --formal Salutation formelle -h, --help Show this message and exit


Exemple avancé : travail avec des fichiers et sous-commandes



Considérons un scénario plus complexe — un utilitaire pour travailler avec des fichiers texte prenant en charge les sous-commandes count et search.



import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.core.subcommandsimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.defaultimport com.github.ajalt.clikt.parameters.options.optionimport java.io.File

class FileTool : CliktCommand() { override fun run() = Unit // La commande racine ne fait rien}

class Count : CliktCommand(help = "Compter les lignes dans un fichier") { val file: File by argument(help = "Chemin vers le fichier") .validate { require(it.exists()) { "Fichier non trouvé : $it" } }

override f

Recommendations