2016-05-02 2 views
-1

J'étend une classe qui utilise OptionParser pour analyser les options de ligne de commande.Comment faire pour déplacer ARGV après OptionParser?

Je voudrais que ma classe traite les arguments restant après la dernière option. Y at-il un équivalent en Ruby au optind disponible pour les appelants de getopt(3) en C?

une certaine façon de déterminer, le nombre d'options ont été trouvées dans ARGV - donc je peux shift par que beaucoup sauter les les options et ne traiter que les arguments ?

J'ai par exemple accès à l'objet opt_parser lui-même. Puis-je, peut-être, comprendre à partir de cela, combien de morceaux de mon ARGV il a consommé?

+1

Veuillez lire "[mcve]". Votre question doit mieux définir le problème. Montrez-nous dans le code, avec un exemple d'invocation, ce que votre sortie devrait être. –

Répondre

1

Je ne comprends pas votre question, pouvez-vous ajouter un exemple minimal pour montrer votre problème.

Si je lance cet exemple minimal avec les options -v test:

require 'optparse' 

#Anlegen des Parsers 
opts = OptionParser.new() 
opts.on("-v", "--[no-]verbose", "Run verbosely") { |v| 
    puts "->Verbose is #{v.inspect}" 
} 

opts.parse! 

puts "Remaining ARGV: %s" % ARGV.inspect 

puis-je obtenir le résultat

->Verbose is true 
Remaining ARGV: ["test"] 

Une fois que vous analysez les options, ARGV contient les arguments restants.

+0

Vous avez probablement raison - apparemment, la classe sous-jacente que j'utilise - 'Sensu :: Plugin :: Check :: CLI - fait une copie de' ARGV' avant de passer à OptionParser. Mais, j'ai trouvé, je peux obtenir la liste traitée (avec des options enlevées) comme 'argv' (minuscules), donc je vais bien ... Souhait, je pourrais supprimer la question, mais je ne peux pas ... –

+0

N'y a-t-il pas une option 'delete' sous les badges? Normalement, il est possible pour le questionneur de supprimer sa propre question. – knut

+0

Lorsque j'ai publié ce commentaire, la suppression ne fonctionnait pas car la question avait déjà été répondue. Maintenant, au lieu d'interdire la suppression pure et simple, le site avertit, que la suppression répétée des questions répondues fera de moi une mauvaise personne. Quelque chose a dû changer dans ce court laps de temps ... –