Framework CLI para Swift: creación de utilidades de consola en iOS/macOS

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Framework CLI para Swift: creación de utilidades de consola en iOS y macOS



El desarrollo de aplicaciones de consola (CLI — Command Line Interface) para el ecosistema de Apple durante mucho tiempo fue prerrogativa de Python, Ruby o Bash. Sin embargo, con la aparición de Swift y su potente conjunto de herramientas, incluyendo Swift Package Manager (SPM), surgió la posibilidad de crear utilidades de consola rápidas, tipificadas y fácilmente mantenibles en el lenguaje nativo de iOS/macOS. En este artículo, analizaremos en detalle el framework principal para construir CLI en Swift — Apple's ArgumentParser, así como soluciones alternativas.



¿Qué es un framework CLI para Swift?



Un framework CLI es una biblioteca que se encarga de las tareas rutinarias de analizar argumentos de línea de comandos, generar ayuda, manejar errores y organizar comandos. En el mundo de Swift, el estándar de facto es ArgumentParser, desarrollado por Apple y que forma parte de Swift Open Source. Permite describir de forma declarativa la interfaz de su utilidad, y todo lo demás lo hace automáticamente.



Principales capacidades de ArgumentParser:

  • Definición declarativa de comandos — usted describe la estructura y el framework analiza los argumentos por sí mismo.
  • Ayuda automática — las banderas --help y -h se generan automáticamente.
  • Soporte para comandos anidados (como en git o swift).
  • Validación de tipos — si se espera un número y se pasa una cadena, se mostrará un error claro.
  • Integración con SPM — basta con agregar la dependencia en Package.swift.


Instalación y configuración



Para trabajar necesitará Swift 5.5+ (se recomienda 5.7 o superior). Cree un nuevo proyecto de consola a través de SPM:



mkdir MyCLIcd MyCLIswift package init --type executable


Luego edite Package.swift, agregando la dependencia de 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") ] ) ])


Ahora actualice las dependencias y abra el proyecto:



swift package updateopen Package.swift   # abrirá en Xcode


Creación del primer comando



Cree un archivo main.swift (o Sources/MyCLI/main.swift) con el siguiente contenido:



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "Saludo al usuario", discussion: "Este comando muestra un saludo personalizado." )

@Argument(help: "Nombre del usuario") var name: String

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

@Flag(name: .shortAndLong, help: "Mostrar versión") var verbose: Bool = false

mutating func run() throws { if verbose { print("Versión 1.0.0") } for _ in 0..<count { print("¡Hola, \\(name)!\") } }}

Greet.main()


Ahora compile y ejecute:



swift run MyCLI Swift --count 3# Salida:# ¡Hola, Swift!# ¡Hola, Swift!# ¡Hola, Swift!

swift run MyCLI --help# Usage: MyCLI <name> [--count <count>] [--verbose]# Saludo al usuario# ...


Comandos anidados (subcomandos)



Para crear utilidades complejas (como

Recommendations