Frameworks CLI para Kotlin: criação de aplicações de console

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Frameworks CLI para Kotlin: criação de aplicações de console poderosas



Kotlin é uma linguagem moderna, ativamente utilizada não apenas para desenvolvimento Android, mas também para criar aplicações de servidor e console. O desenvolvimento de ferramentas CLI (Command Line Interface) em Kotlin pode ser significativamente simplificado com o uso de frameworks especializados. Neste artigo, analisaremos três soluções mais populares: Clikt, Kotlinx-cli e Aigrette, e as examinaremos com exemplos práticos.



Para que serve um framework CLI?



Escrever um parser de argumentos de linha de comando manualmente é uma tarefa tediosa e propensa a erros. Frameworks para CLI fornecem:



  • Análise automática de argumentos e opções
  • Geração de ajuda (--help)
  • Validação de dados de entrada
  • Suporte a subcomandos (subcommands)
  • Tratamento de erros com mensagens compreensíveis


Clikt — a escolha mais popular



Clikt é uma biblioteca poderosa e flexível que se tornou o padrão de facto para CLI em Kotlin. Ela usa uma abordagem declarativa com anotações e fornece uma API rica.



Instalação (via Gradle):



implementation("com.github.ajalt.clikt:clikt:4.2.1")


Exemplo de aplicação simples:



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 Greet : CliktCommand() { val name by argument() val count by option("--count", "-c", help = "Número de repetições").int().default(1)

override fun run() { repeat(count) { echo("Olá, $name!") } }}

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


Execução:



./app --count 3 João# Saída:# Olá, João!# Olá, João!# Olá, João!


Clikt suporta comandos aninhados, autocompletar, cores no console e tipagem estrita. Para projetos complexos (por exemplo, ferramentas DevOps, utilitários para trabalhar com API), esta é a melhor escolha.



Kotlinx-cli — solução leve da JetBrains



Kotlinx-cli é uma biblioteca oficial dos criadores do Kotlin. Ela é menos funcional que o Clikt, mas é ideal para utilitários simples e projetos pequenos.



Instalação:



implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")


Exemplo:



import kotlinx.cli.*

fun main(args: Array<String>) { val parser = ArgParser("file-util") val input by parser.argument(ArgType.String, description = "Arquivo de entrada") val output by parser.option(ArgType.String, shortName = "o", description = "Arquivo de saída").default("out.txt") val verbose by parser.option(ArgType.Boolean, shortName = "v", description = "Saída detalhada").default(false)

parser.parse(args)

println("Lendo de: $input") println("Escrevendo em: $output") if (verbose) println("Modo detalhado ativado")}


Kotlinx-cli não requer dependências adicionais e é ótimo para prototipagem rápida. No entanto, não suporta comandos aninhados e validação complexa.



Aigrette — abordagem funcional



Aigrette é uma biblioteca menos conhecida, mas interessante, que usa um estilo funcional. Ela é baseada no conceito de "combinadores de parser".



Instalação:



implementation("io.github.petertrr:aigrette:0.3.0")


Exemplo:



import io.github.petertrr.aigrette.*

data class Config(val name: String, val age: Int, val flag: Boo

Recommendations