Swift CLI com ArgumentParser: criando ferramentas de console poderosas

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 (iOS/macOS): ArgumentParser



No mundo do desenvolvimento para o ecossistema Apple, surge frequentemente a necessidade de criar não apenas aplicativos gráficos, mas também utilitários de console poderosos. Seja para automação de build, processamento de dados ou criação de ferramentas auxiliares para iOS/macOS — não é possível prescindir de um CLI (Command Line Interface) de qualidade. Para esses fins, a Apple oferece o framework oficial ArgumentParser, que faz parte do Swift Package Manager. Esta é uma ferramenta moderna, type-safe e declarativa que permite criar aplicativos de console em Swift com o mínimo de esforço.



Ao contrário da análise simples de argumentos via CommandLine.arguments, o ArgumentParser fornece uma abordagem estruturada: você descreve comandos, flags e opções como propriedades de suas estruturas, e o framework gera automaticamente a ajuda, trata erros e valida a entrada. Vamos entender como usar este framework para macOS e iOS (através do Swift Package Manager).



Instalação e configuração



O ArgumentParser não requer instalação separada — ele está disponível como parte da biblioteca padrão do Swift (a partir do Swift 5.5). Para usá-lo em seu projeto, adicione a dependência no Package.swift:



// swift-tools-version:5.7import PackageDescription

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


Para projetos iOS, o framework pode ser adicionado através do Swift Package Manager no Xcode, informando o mesmo repositório. No entanto, vale lembrar que aplicativos CLI geralmente são criados para macOS, mas a biblioteca também pode ser usada em aplicativos iOS para análise interna de strings.



Conceitos principais



O ArgumentParser é construído em torno de três entidades principais:



  • Comandos (ParsableCommand) — o elemento principal, representando um comando CLI. Cada comando é uma estrutura que implementa o protocolo ParsableCommand.
  • Argumentos (@Argument) — parâmetros posicionais, obrigatórios para entrada.
  • Opções (@Option) — parâmetros nomeados com flags longa (--nome) e curta (-n).
  • Flags (@Flag) — chaves booleanas (--verbose, --quiet).


Exemplo: criando uma calculadora CLI simples



Vamos criar um aplicativo de console para macOS que realiza operações aritméticas básicas:



import ArgumentParser

struct Calculator: ParsableCommand { static let configuration = CommandConfiguration( commandName: "calc", abstract: "Calculadora simples para linha de comando", discussion: "Suporta adição, subtração, multiplicação e divisão." )

@Argument(help: "Primeiro número") var firstNumber: Double

@Argument(help: "Segundo número") var secondNumber: Double

@Option(name: [.short, .long], help: "Operação: add, sub, mul, div") var operation: String = "add"

@Flag(name: [.short, .long], help: "Saída detalhada") var verbose: Bool = false

mutating func run() throws { let result: Double switch operation { case "add": result = firstNumber + secondNumber case "sub": result = firstNumber - secondNumber case "mul": result = firstNumber * secondNumber case "div": guard secondNumber != 0 else { throw ValidationError("Divisão por zero!") } result = firstNumber / s

Recommendations