Framework CLI para Swift: creando utilidades de consola para 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
```html

CLI framework para Swift: creando potentes utilidades de consola para iOS y macOS



Swift no es solo un lenguaje para aplicaciones móviles. Con la llegada de Swift Package Manager (SPM) y frameworks como ArgumentParser, los desarrolladores han obtenido la capacidad de crear herramientas de consola completas para macOS e incluso para iOS (en el contexto de procesos de servidor o CI/CD). Los frameworks CLI (Command Line Interface) para Swift permiten analizar argumentos de línea de comandos, procesar banderas, opciones y subcomandos, así como generar ayuda automática.



En este artículo, analizaremos en detalle uno de los frameworks CLI más populares y oficiales: Swift ArgumentParser (desarrollado por Apple). Aprenderá cómo instalarlo a través de SPM, escribir una herramienta de consola simple, agregar subcomandos y argumentos, y verá ejemplos de código para tareas reales.



¿Qué es un framework CLI para Swift?



Un framework CLI es una biblioteca que se encarga del trabajo rutinario de analizar la cadena de la línea de comandos. En lugar de escribir manualmente bucles sobre CommandLine.arguments, usted describe la estructura del comando de forma declarativa: qué argumentos son obligatorios, cuáles son opcionales, qué banderas se admiten. El framework mismo genera la ayuda (--help) y maneja los errores de entrada.



Principales capacidades de Swift ArgumentParser:

  • Descripción declarativa de argumentos y opciones
  • Generación automática de ayuda y versión
  • Soporte para subcomandos (como en git commit o swift build)
  • Validación de tipos (Int, String, Double y personalizados)
  • Integración con SPM y Xcode


Instalación a través de Swift Package Manager



Agregue la dependencia en el archivo Package.swift de su proyecto:



// 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") ] ) ])


Ahora ejecute swift build — la biblioteca se descargará y compilará.



Escribiendo nuestro primer comando



Creemos una utilidad simple que salude al usuario por su nombre y edad.



import ArgumentParser

struct Greet: ParsableCommand { @Argument(help: "Nombre del usuario") var name: String

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

mutating func run() throws { if let age = age { print("¡Hola, \\(name)! Tienes \\(age) años.") } else { print("¡Hola, \\(name)!") } }}

Greet.main()


Ejecute el binario compilado:

./MyCLITool "Ana" --age 25# Salida: ¡Hola, Ana! Tienes 25 años.

./MyCLITool "Máximo"# Salida: ¡Hola, Máximo!


La ayuda generada automáticamente (--help) mostrará todos los argumentos y opciones.



Subcomandos: estructura como en utilidades reales



A menudo, las herramientas CLI tienen varios subcomandos: create, delete, list. ArgumentParser admite esto de forma nativa.



import ArgumentParser

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

struct Add: ParsableCommand { @Argument(help: "Texto de la tarea") var text: String

func run() { print("Tarea añadida: \\(text)") }}

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

Recommendations