Framework CLI para Swift: criação de utilitários de console no iOS/macOS

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

Framework CLI para Swift: criação de utilitários de console no iOS e macOS



O desenvolvimento de aplicações de console (CLI — Command Line Interface) para o ecossistema Apple foi, por muito tempo, prerrogativa de Python, Ruby ou Bash. No entanto, com o surgimento do Swift e seu poderoso conjunto de ferramentas, incluindo o Swift Package Manager (SPM), surgiu a possibilidade de criar utilitários de console rápidos, tipados e facilmente mantidos na linguagem nativa do iOS/macOS. Neste artigo, examinaremos detalhadamente o principal framework para construção de CLI em Swift — o Apple's ArgumentParser, bem como soluções alternativas.



O que é um framework CLI para Swift?



Um framework CLI é uma biblioteca que assume as tarefas rotineiras de análise de argumentos de linha de comando, geração de ajuda, tratamento de erros e organização de comandos. No mundo Swift, o padrão de facto é o ArgumentParser, desenvolvido pela Apple e parte do Swift Open Source. Ele permite descrever declarativamente a interface do seu utilitário, enquanto todo o resto é feito automaticamente.



Principais recursos do ArgumentParser:

  • Definição declarativa de comandos — você descreve a estrutura e o framework analisa os argumentos automaticamente.
  • Ajuda automática — as flags --help e -h são geradas automaticamente.
  • Suporte a comandos aninhados (como em git ou swift).
  • Validação de tipos — se um número é esperado e uma string é fornecida, um erro claro é exibido.
  • Integração com SPM — basta adicionar a dependência no Package.swift.


Instalação e configuração



Para funcionar, você precisará do Swift 5.5+ (recomendado 5.7 ou superior). Crie um novo projeto de console via SPM:



mkdir MyCLIcd MyCLIswift package init --type executable


Em seguida, edite o Package.swift, adicionando a dependência do ArgumentParser:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyCLI", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLI", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])


Agora atualize as dependências e abra o projeto:



swift package updateopen Package.swift   # abrirá no Xcode


Criando o primeiro comando



Crie o arquivo main.swift (ou Sources/MyCLI/main.swift) com o seguinte conteúdo:



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "Saudação ao usuário", discussion: "Este comando exibe uma saudação personalizada." )

@Argument(help: "Nome do usuário") var name: String

@Option(name: .shortAndLong, help: "Número de repetições") var count: Int = 1

@Flag(name: .shortAndLong, help: "Mostrar versão") var verbose: Bool = false

mutating func run() throws { if verbose { print("Versão 1.0.0") } for _ in 0..<count { print("Olá, \\(name)!\") } }}

Greet.main()


Agora compile e execute:



swift run MyCLI Swift --count 3# Saída:# Olá, Swift!# Olá, Swift!# Olá, Swift!

swift run MyCLI --help# Usage: MyCLI <name> [--count <count>] [--verbose]# Saudação ao usuário# ...


Comandos aninhados (subcomandos)



Para criar utilitários complexos (como

Recommendations