Pourquoi Kotlin est-il le langage idéal pour les utilitaires CLI ?
\n\nQuand il s'agit de créer des outils console, de nombreux développeurs se tournent par habitude vers Python ou Bash. Mais si vous connaissez déjà Kotlin (et sur notre site pythonlib.ru, nous sommes convaincus qu'un bon développeur maîtrise plusieurs langages), vous savez à quel point ce langage est concis et expressif. Créer des utilitaires CLI en Kotlin n'est pas seulement une question de mode, mais un véritable moyen d'obtenir des outils rapides, typés et multiplateformes.
\n\nImaginez : vous écrivez une application console en Kotlin qui se compile en JAR ou en binaire natif via GraalVM ou Kotlin/Native. Elle s'exécute partout — du serveur Linux à la machine Windows de votre collègue. Et le code est 2 à 3 fois plus court qu'en Java, et bien plus sûr qu'en Python. Tentant ? Commençons.
\n\nDe quoi avez-vous besoin pour démarrer ?
\n\nPour créer une CLI Kotlin, vous aurez besoin du minimum suivant :
\n- \n
- JDK 11+ installé (je recommande la version 17 ou 21) \n
- IntelliJ IDEA (la version Community suffit) ou n'importe quel éditeur de texte \n
- Connaissances de base en Kotlin (fonctions, classes, collections) \n
- Gradle ou Maven pour la construction \n
Si vous n'avez jamais travaillé avec Kotlin en console, pas de panique. Nous allons passer d'un fichier vide à un utilitaire complet, publiable et utilisable dans des pipelines CI/CD.
\n\nÉtape 1 : Configuration du projet pour un utilitaire CLI
\n\nCréons un projet Gradle simple. Voici le build.gradle.kts minimal :
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.pythonlib.cli.MainKt")\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n implementation("com.github.ajalt.clikt:clikt:4.2.2")\n implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")\n}\n\nRemarquez deux bibliothèques clés : Clikt et Kotlinx CLI. La première est la bibliothèque la plus populaire pour créer des utilitaires CLI en Kotlin. La seconde est la solution officielle de JetBrains. Dans cet article, nous utiliserons Clikt, car elle offre plus de flexibilité et une syntaxe plus élégante.
\n\nÉtape 2 : Écrire la première commande
\n\nCréons le fichier src/main/kotlin/com/pythonlib/cli/Main.kt :
package com.pythonlib.cli\n\nimport com.github.ajalt.clikt.core.CliktCommand\nimport com.github.ajalt.clikt.parameters.arguments.argument\nimport com.github.ajalt.clikt.parameters.options.option\nimport com.github.ajalt.clikt.parameters.options.flag\n\nclass GreetCommand : CliktCommand(\n name = "greet",\n help = "Salue l'utilisateur"\n) {\n private val name: String by argument(\n help = "Nom de l'utilisateur"\n )\n\n private val uppercase: Boolean by option(\n "--uppercase", "-u",\n help = "Afficher le nom en majuscules"\n ).flag()\n\n override fun run() {\n val greeting = "Bonjour, $name !"\n if (uppercase) {\n echo(greeting.uppercase())\n } else {\n echo(greeting)\n }\n }\n}\n\nfun main(args: Array<String>) {\n GreetCommand().main(args)\n}\n\nVoici un utilitaire CLI Kotlin très simple qui prend un nom et un indicateur optionnel. Exécutons-le :
\n\n./gradlew run --args="Alexis --uppercase"\n# Sortie : BONJOUR, ALEXIS !\n\nSeulement 30 lignes de code — et nous avons un outil console fonctionnel. Clikt génère automatiquement l'aide, gère les erreurs et prend en charge l'auto-complétion pour bash/zsh.
\n\nÉtape 3 : Commandes multi-niveaux (comme dans Git)
\n\nLes véritables applications console en Kotlin consistent rarement en une seule commande. Créons un utilitaire de gestion de fichiers avec des sous-commandes :
\n\nimport com.github.ajalt.clikt.core.subcommands\n\nclass FileTool : CliktCommand(\n name