Ruby built-in OptionParser fa questo bene. Combinate con OpenStruct e sei a casa gratuitamente:
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
conterrà i parametri ei valori come un hash.
risparmio e l'esecuzione che dalla riga di comando senza parametri risultati in:
$ ruby test.rb
{}
eseguirlo con i parametri:
$ ruby test.rb --first_name=foo --last_name=bar
{:first_name=>"foo", :last_name=>"bar"}
Questo esempio sta usando un hash per contenere le opzioni, ma si può utilizzare un OpenStruct che si tradurrà in uso come la vostra richiesta:
require 'optparse'
require 'ostruct'
options = OpenStruct.new
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!
puts options.first_name + ' ' + options.last_name
$ ruby test.rb --first_name=foo --last_name=bar
foo bar
I t crea anche automaticamente il vostro -h
o --help
opzione:
$ ruby test.rb -h
Usage: test [options]
--first_name FIRSTNAME
--last_name LASTNAME
È possibile utilizzare contrassegni brevi troppo:
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
esecuzione che attraverso i suoi passi:
$ 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"}
E 'facile aggiungere spiegazioni in linea anche per le opzioni:
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!
e:
$ ruby test.rb -h
Usage: test [options]
-f, --first_name FIRSTNAME The first name
-l, --last_name LASTNAME The last name
OptionParser supporta anche la conversione del parametro a un tipo, ad esempio un numero intero o un array. Fare riferimento alla documentazione per ulteriori esempi e informazioni.
Si dovrebbe anche guardare l'elenco di questioni connesse al diritto:
https://www.ruby-toolbox.com/categories/CLI_Option_Parsers –
Se non sbaglio, Highline sembra l funzioni di aiuto ike per chiedere agli utenti di inserire Quindi userei Highline per far dire alla mia console "First Name:" e attendo il loro input. C'è una funzione particolare che dovrei guardare in essa? –
Ci sono molte gemme tra cui puoi scegliere; quel sito web classifica le biblioteche e le ordina in base alla popolarità. Ho persino scritto la mia gemma, chiamata "acclaim", e supporta la sintassi '--option = value'. Non ho avuto il tempo di mantenere i miei progetti di software libero, però. Dovresti scegliere una libreria meglio supportata. –