CLI Frameworks para Kotlin: criando aplicações de console poderosas
Kotlin é uma linguagem moderna que se adequa perfeitamente não apenas para desenvolvimento Android ou servidor, mas também para criar aplicações de console (CLI). Para não escrever a análise de argumentos manualmente, existem frameworks especializados. Neste artigo, analisaremos as três soluções mais populares: Clikt, kotlinx-cli e picocli. Você conhecerá suas características, verá exemplos de código e poderá escolher a ferramenta adequada para seu projeto.
Para que serve um CLI framework?
Criar utilitários de linha de comando é uma tarefa que rapidamente se complica: é necessário processar flags, opções, argumentos posicionais e exibir ajuda. A implementação manual leva a erros e duplicação de código. Os frameworks oferecem mecanismos prontos:
- Descrição declarativa da interface de comandos
- Geração automática de ajuda (--help)
- Validação de entrada
- Suporte a subcomandos (estilo git)
- Type safety
1. Clikt — o framework mais "kotlinístico"
Clikt (https://github.com/ajalt/clikt) é uma biblioteca pura Kotlin que usa DSL e propriedades delegadas. Ela não depende de anotações Java e oferece uma API intuitiva.
Instalação
// build.gradle.ktsimplementation("com.github.ajalt.clikt:clikt:4.2.2")Exemplo: calculadora 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 Calc : CliktCommand() { val a: Int by argument() val b: Int by argument() val multiply by option("--mult", "-m", help = "Multiplicar, em vez de somar").flag()
override fun run() { val result = if (multiply) a * b else a + b echo("Resultado: $result") }}
fun main(args: Array<String>) = Calc().main(args)Execução: kotlin calc 5 3 --mult → Resultado: 15.
Vantagens do Clikt:
- Integração completa com Kotlin (DSL, delegados)
- Sistema de validação poderoso (custom validators)
- Suporte a subcomandos de qualquer profundidade
- Geração automática de páginas man
- Comunidade ativa e atualizações
2. kotlinx-cli — solução leve da JetBrains
kotlinx-cli é uma biblioteca experimental que faz parte do ecossistema Kotlin. Ela é minimalista e adequada para utilitários pequenos.
Instalação
// build.gradle.ktsimplementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")Exemplo: saudação
import kotlinx.cli.*
fun main(args: Array<String>) { val parser = ArgParser("greet") val name by parser.option(ArgType.String, shortName = "n", description = "Nome") .default("mundo") val times by parser.option(ArgType.Int, shortName = "t", description = "Número de vezes") .default(1)
parser.parse(args)
repeat(times) { println("Olá, $name!") }}Execução: kotlin greet -n Kotlin -t 2 → Olá, Kotlin! (duas vezes).
Características do kotlinx-cli:
- API muito simples — mínimo de código
- Suporte a tipos básicos (String, Int, Boolean)
- Não é adequado para hierarquias de comandos complexas
- Status experimental (API pode mudar)
- Sem validação integrada e dicas
3. picocli — framework poderoso com raízes Java
picocli é um framework popular que funciona tanto com Java quanto com Kotlin. Ele usa anotações, mas possui suporte especial para Kotlin DSL.
Também na biblioteca
Cache em C++: Redis, Memcached e soluções embutidas
Mockery para PHP: guia completo com exemplos práticos
Trabalhando com Excel em Rust: bibliotecas para leitura e escrita
Cliente HTTP para Java: visão geral das principais bibliotecas (Java 11, Apache, OkHttp, Retrofit)
Cache em C++: Biblioteca Cache++