Comment accéder aux arguments de ligne de commande pour une application de ligne de commande dans Swift?
macos
command-line-arguments
swift
Anthony Mittaz
la source
la source
Réponses:
Apple a publié la
ArgumentParser
bibliothèque pour faire exactement cela:Analyseur d'argument rapide
https://github.com/apple/swift-argument-parser
la source
Mise à jour 17/01/17: mise à jour de l'exemple pour Swift 3.
Process
a été renommé enCommandLine
.Mise à jour 30/09/2015: mise à jour de l'exemple pour qu'il fonctionne dans Swift 2.
Il est en fait possible de faire cela sans Foundation ou
C_ARGV
etC_ARGC
.La bibliothèque standard Swift contient une structure
CommandLine
qui a une collection deString
s appeléearguments
. Vous pouvez donc activer des arguments comme celui-ci:la source
Process.arguments
le même queNSProcessInfo.processInfo().arguments
?Process
objet est maintenant connu sous le nom d'CommandLine
objet. Cela sera probablement entièrement intégré une fois que Swift 3.0 sera officiellement publié.Dans Swift 3, utilisez
CommandLine
enum au lieu deProcess
Alors:
la source
Utilisez les constantes de niveau supérieur
C_ARGC
etC_ARGV
.Notez que j'utilise la plage de
1..C_ARGC
car le premier élément duC_ARGV
"tableau" est le chemin de l'application.La
C_ARGV
variable n'est pas réellement un tableau mais est sous-scriptable comme un tableau.la source
C_ARCG
semble ne plus être pris en charge.Process.argc
etProcess.arguments
pour cela, bien qu'il semble que cela puisse changer pourCommandLine.argc
etCommandLine.arguments
avec les modifications les plus récentes de la langue.Quiconque souhaite utiliser l'ancien "getopt" (qui est disponible dans Swift) peut l'utiliser comme référence. J'ai fait un portage Swift de l'exemple GNU en C que l'on peut trouver sur:
http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html
avec une description complète. Il est testé et entièrement fonctionnel. Cela ne nécessite pas non plus de Fondation.
la source
Vous pouvez créer un analyseur d'arguments à l'aide du
CommandLine.arguments
tableau et ajouter la logique de votre choix.Vous pouvez le tester. Créer un fichier
arguments.swift
compilez-le et exécutez-le:
Le problème avec la construction de votre propre analyseur d'arguments est de prendre en compte toutes les conventions d'argument de ligne de commande. Je recommanderais d'utiliser un analyseur d'arguments existant.
Vous pouvez utiliser:
J'ai écrit sur la façon de créer des outils de ligne de commande sur les trois. Vous devriez les vérifier et décider quel style vous convient le mieux.
Si vous êtes intéressé, voici les liens:
la source