Rubys eingebaute in OptionParser tut das schön. Kombinieren Sie es mit OpenStruct und du bist frei Haus:
require 'optparse'
options = {}
OptionParser.new do |opt|
opt.on('--first_name FIRSTNAME') { |o| options[:first_name] = o }
opt.on('--last_name LASTNAME') { |o| options[:last_name] = o }
end.parse!
puts options
options
werden die Parameter und Werte als Hash enthalten.
Speicher und ausgeführt, dass ohne Parameter Ergebnisse in der Befehlszeile in:
$ ruby test.rb
{}
es mit den Parametern ausgeführt wird:
$ ruby test.rb --first_name=foo --last_name=bar
{:first_name=>"foo", :last_name=>"bar"}
Das Beispiel eines Hash wird mit den Optionen enthalten, aber Sie kann ein OpenStruct verwenden, das zu einer Nutzung wie Ihre Anfrage führt:
I t sogar automatisch erstellt Ihre -h
oder --help
Option:
$ ruby test.rb -h
Usage: test [options]
--first_name FIRSTNAME
--last_name LASTNAME
Sie können zu kurz Fahnen verwenden:
require 'optparse'
options = {}
OptionParser.new do |opt|
opt.on('-f', '--first_name FIRSTNAME') { |o| options[:first_name] = o }
opt.on('-l', '--last_name LASTNAME') { |o| options[:last_name] = o }
end.parse!
puts options
Lauf dass auf Herz und Nieren:
$ ruby test.rb -h
Usage: test [options]
-f, --first_name FIRSTNAME
-l, --last_name LASTNAME
$ ruby test.rb -f foo --l bar
{:first_name=>"foo", :last_name=>"bar"}
Es ist einfach, Inline-Erklärungen hinzufügen für die Optionen auch:
OptionParser.new do |opt|
opt.on('-f', '--first_name FIRSTNAME', 'The first name') { |o| options[:first_name] = o }
opt.on('-l', '--last_name LASTNAME', 'The last name') { |o| options[:last_name] = o }
end.parse!
und:
$ ruby test.rb -h
Usage: test [options]
-f, --first_name FIRSTNAME The first name
-l, --last_name LASTNAME The last name
OptionParser unterstützt auch den Parameter in einen Typ umzuwandeln, wie beispielsweise eine ganze oder ein Array. Weitere Beispiele und Informationen finden Sie in der Dokumentation.
Sie sollten auch an der damit verbundenen Fragen Liste rechts aussehen:
https://www.ruby-toolbox.com/categories/CLI_Option_Parsers –
Wenn ich mich nicht irre, scheint Highline l ike Helferfunktionen, um Benutzer zur Eingabe zu bitten. Also würde ich Highline benutzen, um meine Konsole 'Vorname:' sagen zu lassen und auf ihre Eingabe zu warten. Gibt es eine bestimmte Funktion, die ich darin sehen sollte? –
Es gibt viele Edelsteine, aus denen Sie wählen können; Diese Website kategorisiert die Bibliotheken und sortiert sie nach Beliebtheit. Ich habe sogar mein eigenes Juwel namens "acclaim" geschrieben, und es unterstützt die Syntax "--option = value". Ich hatte jedoch keine Zeit, meine freien Software-Projekte zu pflegen. Sie sollten eine besser unterstützte Bibliothek auswählen. –