Framework CLI para Swift: criando utilitários de console para 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
```html

CLI framework para Swift: criando poderosas utilitários de console para iOS e macOS



Swift não é apenas uma linguagem para aplicativos móveis. Com o surgimento do Swift Package Manager (SPM) e de frameworks como o ArgumentParser, os desenvolvedores ganharam a capacidade de criar ferramentas de console completas para macOS e até mesmo para iOS (no contexto de processos server-side ou CI/CD). Frameworks CLI (Command Line Interface) para Swift permitem analisar argumentos de linha de comando, processar flags, opções e subcomandos, além de gerar ajuda automática.



Neste artigo, vamos detalhar um dos frameworks CLI mais populares e oficiais — o Swift ArgumentParser (desenvolvido pela Apple). Você aprenderá como instalá-lo via SPM, escrever uma ferramenta de console simples, adicionar subcomandos e argumentos, e verá exemplos de código para tarefas reais.



O que é um framework CLI para Swift?



Um framework CLI é uma biblioteca que assume o trabalho rotineiro de analisar a string da linha de comando. Em vez de escrever manualmente loops sobre CommandLine.arguments, você descreve a estrutura do comando de forma declarativa: quais argumentos são obrigatórios, quais são opcionais, quais flags são suportadas. O próprio framework gera a ajuda (--help) e lida com erros de entrada.



Principais recursos do Swift ArgumentParser:

  • Descrição declarativa de argumentos e opções
  • Geração automática de ajuda e versão
  • Suporte a subcomandos (como em git commit ou swift build)
  • Validação de tipos (Int, String, Double e personalizados)
  • Integração com SPM e Xcode


Instalação via Swift Package Manager



Adicione a dependência no Package.swift do seu projeto:



// swift-tools-version:5.9import PackageDescription

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


Agora execute swift build — a biblioteca será baixada e compilada.



Escrevendo o primeiro comando



Vamos criar uma utilidade simples que saúda o usuário pelo nome e idade.



import ArgumentParser

struct Greet: ParsableCommand { @Argument(help: "Nome do usuário") var name: String

@Option(name: .shortAndLong, help: "Idade") var age: Int?

mutating func run() throws { if let age = age { print("Olá, \\(name)! Você tem \\(age) anos.") } else { print("Olá, \\(name)!") } }}

Greet.main()


Execute o binário compilado:

./MyCLITool "Ana" --age 25# Saída: Olá, Ana! Você tem 25 anos.

./MyCLITool "Máximo"# Saída: Olá, Máximo!


A ajuda gerada automaticamente (--help) mostrará todos os argumentos e opções.



Subcomandos: estrutura como em utilitários reais



Frequentemente, ferramentas CLI possuem vários subcomandos: create, delete, list. O ArgumentParser suporta isso nativamente.



import ArgumentParser

struct TaskManager: ParsableCommand { static var configuration = CommandConfiguration( subcommands: [Add.self, List.self, Delete.self] )}

struct Add: ParsableCommand { @Argument(help: "Texto da tarefa") var text: String

func run() { print("Tarefa adicionada: \\(text)") }}

struct List: ParsableCommand { func run() { print("Lista de tarefas:") ```

Recommendations