Automatização em Kotlin: por que vale a sua atenção
Você já perdeu uma hora renomeando centenas de arquivos, analisando logs manualmente ou copiando dados de uma API para outra? Uma dor familiar. Normalmente, para essas tarefas, recorremos ao Python ou Bash, mas o Kotlin é uma ferramenta surpreendentemente poderosa e elegante para automatização em Kotlin. Ele combina a concisão de uma linguagem moderna com o desempenho da JVM e acesso total ao ecossistema Java.
Neste artigo, não vamos escrever mais um "Hello, World". Vamos direto ao ponto: analisaremos exemplos de código Kotlin que realmente serão úteis no dia a dia de um desenvolvedor, administrador de sistemas ou testador. Você aprenderá a escrever scripts Kotlin para manipular arquivos, enviar requisições HTTP, analisar dados e executar comandos do sistema. Vamos lá!
Por que Kotlin, e não Python ou Bash?
Cada linguagem tem seu nicho. Bash é ideal para one-liners rápidos, Python para lógica complexa e ciência de dados. Mas o Kotlin para automatização oferece várias vantagens únicas:
- Segurança de tipos. Você não terá um erro "string vs int" em tempo de execução — o compilador o detecta no início.
- Compatibilidade total com Java. Qualquer biblioteca Java (Apache POI, OkHttp, Jackson) está disponível de imediato.
- Kotlin Script (.kts). Você pode escrever scripts sem compilação — execute como um arquivo .sh comum.
- Sintaxe concisa. Menos código boilerplate, mais legibilidade.
Configuração do ambiente para scripts Kotlin
Para executar scripts Kotlin, não é necessário instalar o Android Studio. Basta:
- Instalar o compilador Kotlin (ou SDKMAN).
- Criar um arquivo com a extensão
.kts. - Executar com o comando:
kotlinc -script script.kts
Pronto. Agora vamos escrever o primeiro script realmente útil.
Exemplo 1: Renomeação em massa de arquivos
Imagine: você tem uma pasta com fotos IMG_001.jpg, IMG_002.jpg ... IMG_100.jpg. Precisa renomeá-las para holiday_01.jpg, holiday_02.jpg .... Manualmente — 10 minutos. Com script — 2 segundos.
import java.io.File
fun main() { val folder = File("/caminho/para/fotos") val files = folder.listFiles()?.filter { it.extension == "jpg" } ?: return
files.sorted().forEachIndexed { index, file -> val newName = "holiday_${index.toString().padStart(2, '0')}.jpg" val newFile = File(folder, newName) file.renameTo(newFile) println("Renomeado: ${file.name} -> $newName") }}
// Execução: kotlinc -script rename.ktsEste exemplo de código Kotlin faz três coisas: filtra apenas arquivos JPG, ordena por nome (para não perder a ordem) e renomeia com numeração. Observe o padStart — um recurso elegante do Kotlin para formatação de números.
Exemplo 2: Requisição HTTP e análise de JSON
Frequentemente, é necessário automatizar a coleta de dados de uma API web. Suponha que obtemos uma lista de usuários e a salvamos em CSV. Em Kotlin para automatização, isso é feito em poucas linhas usando a biblioteca ktor-client (ou o bom e velho java.net.HttpURLConnection).
Mas para scripts, é mais fácil conectar uma biblioteca externa via @file:DependsOn:
@file:DependsOn("com.google.code.gson:gson:2.10.1")@file:DependsOn("io.ktor:ktor-client-core:2.3.7")@file:DependsOn("io.ktor:ktor-client-java:2.3.7")
import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*import com.google.gson.Gsonimport com.google.gson.reflect.TypeTokenimport java.io.File\