Frameworks CLI pour Kotlin : Clikt, kotlinx-cli, picocli — aperçu et comparaison

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

Frameworks CLI pour Kotlin : créons des applications console puissantes



Kotlin est un langage moderne qui convient parfaitement non seulement pour Android ou le développement serveur, mais aussi pour la création d'applications console (CLI). Pour ne pas écrire manuellement l'analyse des arguments, il existe des frameworks spécialisés. Dans cet article, nous allons examiner les trois solutions les plus populaires : Clikt, kotlinx-cli et picocli. Vous découvrirez leurs caractéristiques, verrez des exemples de code et pourrez choisir l'outil adapté à votre projet.



Pourquoi un framework CLI est-il nécessaire ?

La création d'utilitaires en ligne de commande est une tâche qui se complexifie rapidement : il faut gérer les drapeaux, les options, les arguments positionnels, afficher l'aide. Une implémentation manuelle entraîne des erreurs et des duplications de code. Les frameworks proposent des mécanismes prêts à l'emploi :

  • Description déclarative de l'interface des commandes
  • Génération automatique de l'aide (--help)
  • Validation des entrées
  • Prise en charge des sous-commandes (style git)
  • Sécurité des types


1. Clikt — le framework le plus "kotlinesque"

Clikt (https://github.com/ajalt/clikt) est une bibliothèque pure Kotlin qui utilise le DSL et les propriétés déléguées. Elle ne dépend pas des annotations Java et propose une API intuitive.



Installation

// build.gradle.ktsimplementation("com.github.ajalt.clikt:clikt:4.2.2")


Exemple : une calculatrice simple

import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.optionimport com.github.ajalt.clikt.parameters.types.int

class Calc : CliktCommand() { val a: Int by argument() val b: Int by argument() val multiply by option("--mult", "-m", help = "Multiplier, plutôt qu'ajouter").flag()

override fun run() { val result = if (multiply) a * b else a + b echo("Résultat : $result") }}

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


Exécution : kotlin calc 5 3 --mult → Résultat : 15.



Avantages de Clikt :

  • Intégration complète avec Kotlin (DSL, délégués)
  • Système de validation puissant (validateurs personnalisés)
  • Prise en charge des sous-commandes de n'importe quelle profondeur
  • Génération automatique de pages man
  • Communauté active et mises à jour


2. kotlinx-cli — une solution légère de JetBrains

kotlinx-cli est une bibliothèque expérimentale faisant partie de l'écosystème Kotlin. Elle est minimaliste et adaptée aux petits utilitaires.



Installation

// build.gradle.ktsimplementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")


Exemple : salutation

import kotlinx.cli.*

fun main(args: Array<String>) { val parser = ArgParser("greet") val name by parser.option(ArgType.String, shortName = "n", description = "Nom") .default("monde") val times by parser.option(ArgType.Int, shortName = "t", description = "Nombre de fois") .default(1)

parser.parse(args)

repeat(times) { println("Bonjour, $name !") }}


Exécution : kotlin greet -n Kotlin -t 2 → Bonjour, Kotlin ! (deux fois).



Caractéristiques de kotlinx-cli :

  • API très simple — un minimum de code
  • Prise en charge des types de base (String, Int, Boolean)
  • Peu adapté aux hiérarchies de commandes complexes
  • Statut expérimental (l'API peut changer)
  • Pas de validation intégrée ni d'indications


3. picocli — un framework puissant aux racines Java

picocli est un framework populaire qui fonctionne aussi bien avec Java qu'avec Kotlin. Il utilise des annotations, mais dispose d'un support spécial pour le DSL Kotlin.

Recommendations