Ich suche nach einer Möglichkeit, Parameter wie folgt an das Kochbuch des Küchenchefs zu übergeben:
$ vagrant up some_parameter
Und dann some_parameter
in einem der Kochbücher des Küchenchefs verwenden.
ruby
command-line
vagrant
parameter-passing
Wojciech Bednarski
quelle
quelle
Sie können auch die GetoptLong Ruby-Bibliothek einschließen , mit der Sie Befehlszeilenoptionen analysieren können.
Vagrantfile
Dann können Sie ausführen:
Hinweis: Stellen Sie sicher, dass die benutzerdefinierte Option vor dem Befehl vagrant angegeben ist , um einen ungültigen Optionsüberprüfungsfehler zu vermeiden.
Weitere Informationen zur Bibliothek finden Sie hier .
quelle
opts
nicht verarbeiteten aufgeführt sind:vagrant --custom-option=option destroy -f
vagrant: invalid option -- f
vagrant --custom-option=option -- up
sollte genug seinvagrant -- destroy -f
scheint es, dass jetzt die-f
Kraftflagge überhaupt nicht passiert, noch tippen muss[y/N]
. Ich habe es beim Ausführen mit Standardparametern zum Laufen gebracht,vagrant up
aber dasdestroy
erfordert--
irgendwelche Ideen?Es ist möglich, Variablen aus ARGV zu lesen und sie dann zu entfernen, bevor Sie mit der Konfigurationsphase fortfahren. Es fühlt sich schwierig an, ARGV zu ändern, aber ich konnte keinen anderen Weg für Befehlszeilenoptionen finden.
Vagrantfile
Bestimmung.sh
quelle
puts ARGV
wird das richtige Array angezeigt, nachdem zusätzliche benutzerdefinierte Argumente entfernt wurden.puts "#{ARGV}"
Zeilevagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/plugin/v2/command.rb
eingefügt und diese Zeile wird gedruckt, bevor die relevanten Argumente in der Vagrant-Datei entfernt wurden. Dies bedeutet, dass die Entfernung zwecklos ist, da das ARGV an den Validator übergeben wird, derAn invalid option was specified
vor jedem ausgegeben wird Operationen können auf ARGV stattfinden.Die GetoptLong-Lösung von @ benjamin-gauthier ist wirklich ordentlich und passt gut zum rubinroten und vagabundierenden Paradigma.
Es wird jedoch eine zusätzliche Zeile benötigt, um den sauberen Umgang mit den vagabundierenden Argumenten zu korrigieren, wie z
vagrant destroy -f
.Dadurch kann dieser Codeblock angehalten werden, wenn die benutzerdefinierten Optionen verarbeitet werden. also jetzt
vagrant --custom-option up --provision
odervagrant destroy -f
werden sauber gehandhabt.Hoffe das hilft,
quelle
quelle