¿Cómo se accede a los argumentos de la línea de comandos para una aplicación de línea de comandos en Swift?
macos
command-line-arguments
swift
Anthony Mittaz
fuente
fuente

Respuestas:
Apple ha lanzado la
ArgumentParserbiblioteca para hacer precisamente esto:Analizador de argumentos veloz
https://github.com/apple/swift-argument-parser
fuente
Actualización 17/01/17: Se actualizó el ejemplo de Swift 3.
Processha cambiado de nombreCommandLine.Actualización 30/09/2015: Se actualizó el ejemplo para que funcione en Swift 2.
De hecho, es posible hacer esto sin Foundation o
C_ARGVyC_ARGC.La biblioteca estándar de Swift contiene una estructura
CommandLineque tiene una colección deStrings llamadosarguments. Entonces podrías activar argumentos como este:fuente
Process.argumentslo mismo queNSProcessInfo.processInfo().arguments?Processobjeto ahora se conoce como elCommandLineobjeto. Esto probablemente se incorporará por completo una vez que Swift 3.0 se lance oficialmente.En Swift 3 use
CommandLineenum en lugar deProcessEntonces:
fuente
Utilice las constantes de nivel superior
C_ARGCyC_ARGV.Tenga en cuenta que estoy usando el rango de
1..C_ARGCporque el primer elemento de laC_ARGV"matriz" es la ruta de la aplicación.La
C_ARGVvariable no es en realidad una matriz, sino que es sub-programable como una matriz.fuente
C_ARCGparece que ya no se admite.Process.argcyProcess.argumentspara esto, aunque parece que esto podría estar cambiando paraCommandLine.argcyCommandLine.argumentscon los cambios más recientes a la lengua.Cualquiera que quiera usar el antiguo "getopt" (que está disponible en Swift) puede usarlo como referencia. Hice un puerto Swift del ejemplo de GNU en C que se puede encontrar en:
http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html
con una descripción completa. Está probado y es completamente funcional. Tampoco requiere Fundación.
fuente
Puede crear un analizador de argumentos utilizando
CommandLine.argumentsArray y agregar la lógica que desee.Puedes probarlo. Crea un archivo
arguments.swiftcompílelo y ejecútelo:
El problema con la construcción de su propio analizador de argumentos es tener en cuenta todas las convenciones de argumentos de la línea de comandos. Recomendaría usar un analizador de argumentos existente.
Podrías usar:
He escrito sobre cómo construir herramientas de línea de comandos en los tres. Deberías echarles un vistazo y decidir qué estilo te queda mejor.
Si está interesado aquí están los enlaces:
fuente