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.
Aussi dans la bibliothèque
Génération de PDF en Java avec iText
Configuration des applications Swift : outils et bibliothèques pour iOS/macOS
Travailler avec YAML en Swift : bibliothèque Yams pour iOS/macOS