Utilitários CLI em Swift: criando ferramentas de linha de comando do zero

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

Seu primeiro CLI em Swift: da ideia à ferramenta pronta

\n\n

Você já se perguntou como são criados aqueles utilitários convenientes no terminal — curl, git, brew? Acontece que criar seu próprio utilitário CLI em Swift não é mais difícil do que fazer um aplicativo iOS simples. Além disso, Swift é ideal para isso: é rápido, seguro em termos de memória e funciona perfeitamente tanto no macOS quanto no Linux.

\n\n

Neste artigo, criaremos do zero uma ferramenta de console completa que analisará argumentos, exibirá texto colorido e até mesmo tratará erros. Você aprenderá a configurar o projeto através do Swift Package Manager, conectar a poderosa biblioteca ArgumentParser e preparar o utilitário para publicação no Homebrew. Pronto? Vamos nessa!

\n\n

Por que Swift para CLI é legal?

\n\n

Quando se trata de criar ferramentas de linha de comando, muitos pensam imediatamente em Python, Bash ou Go. Mas Swift é o cavalo escuro que surpreende:

\n\n
    \n
  • Velocidade no nível do C — seu utilitário vai voar.
  • \n
  • Trabalho seguro com memória — sem segfaults ou vazamentos.
  • \n
  • Multiplataforma — Swift funciona perfeitamente no Linux, então seu CLI pode ser executado até em servidores.
  • \n
  • Sintaxe moderna — o código é lido como boa prosa.
  • \n
  • Ecossistema enorme — o Swift Package Manager (SPM) dá acesso a milhares de bibliotecas.
  • \n
\n\n

A propósito, se você já programa em Python e quer experimentar algo novo para CLI, Swift será uma excelente escolha: você obterá um binário nativo sem dependências e com consumo mínimo de memória.

\n\n

Configuração do projeto: Swift Package Manager

\n\n

Primeiro, vamos criar um novo projeto. Abra o terminal e execute:

\n\n
mkdir MyCLI\ncd MyCLI\nswift package init --type executable
\n\n

O comando criará a estrutura padrão do SPM. Observe o arquivo Package.swift — é o coração do seu projeto. Vamos editá-lo para adicionar a dependência do Apple/Swift ArgumentParser:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyCLI",\n    dependencies: [\n        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyCLI",\n            dependencies: [\n                .product(name: "ArgumentParser", package: "swift-argument-parser")\n            ]\n        )\n    ]\n)
\n\n

Agora execute swift build. O SPM baixará a biblioteca e compilará o projeto. Se tudo ocorrer bem — você está pronto para escrever código!

\n\n

Escrevendo o primeiro comando: Hello World turbinado

\n\n

Vamos abrir Sources/MyCLI/main.swift e escrever um comando simples que exibe uma saudação. Mas não apenas "Hello, World!", usando argumentos:

\n\n
import ArgumentParser\n\nstruct HelloCommand: ParsableCommand {\n    static let configuration = CommandConfiguration(\n        commandName: "hello",\n        abstract: "Exibe uma saudação",\n        discussion: "Use este comando para cumprimentar o mundo ou uma pessoa específica."\n    )\n\n    @Argument(help: "Nome da pessoa a ser cumprimentada")\n    var name: String = "World"\n\n    @Option(name: .shortAndLong, help: "Número de repetições")\n    var count: Int = 1\n\n    func run() throws {\n        for _ in 0..<count {\n            print("Olá, \\(name)! 👋")\n        }\n    }\n}\n\nHelloCommand.main()
\n\n

Execute: swift run MyCLI hello --count 3 "iOS Developer". Você verá:

\n\n
Olá, iOS Developer! 👋\nOlá, iOS Developer! 👋\nOlá, iOS Developer! 👋
\n\n

Observe: Argumen

Blogs

Book Recommendations