Attualmente sto scrivendo in Python ma desidero provare Ruby per diversi motivi. Ho esaminato un sacco di codice di esempio e ho letto molta documentazione nell'ultima settimana. Uno dei motivi di preoccupazione che ho è la mancanza di un corretto argomento della riga di comando che analizza le librerie in Ruby. Esperti di rubini, non arrabbiarti con me - forse non lo so. Ecco perché sono qui.Ruby optparse Limitazioni
In Python, ero abituato a usare argparse
che a mio parere è semplicemente perfetto (forse per le mie esigenze). Sfortunatamente, OptionParser
non consente la flessibilità e le funzionalità di argparse
.
Sono in particolare guardando i seguenti vincoli per ora:
Come faccio liste delle opzioni si escludono a vicenda? Ad es. una lista di opzioni molto piccola per un programma chiamato
test
.usage: test [-h] [-a | -b | -c] [-d] [filename]
posso scrivere del codice come:
# implement a ---------------------------------------------- opts.on("-a", "--alpha", "implement alpha") do #... end
e così via. Ma poi, non ho modo di rendere
a
,b
ec
mutuamente esclusivi a meno che non codifichi una permutazione di quelli e faccia qualche gestione degli errori. Ad es.test -ab #should through an error
In Python, ho potuto farlo in un modo molto semplice:
# create an command line argument parser object cmd_line_parser = argparse.ArgumentParser() # create a mutually exclusive group cmd_line_group = cmd_line_parser.add_mutually_exclusive_group()
In secondo luogo, non ho modo di abbinamento con
-d
-a
a meno che non espressamente scrivere il codice per questo permutazione . Questo è folle.Devo scrivere l'elenco
[OPTION]
; Non ho modo di sapere se ho torto o ragione a meno che e fino a quando non faccio un test blackbox per tutte le possibili permutazioni di input e li mappo alla lista blackbox.Inoltre, gli argomenti obbligatori devono essere nuovamente gestiti utilizzando un codice speciale.
v'è un facile di trattare questi vincoli utilizzando optparse
o altre librerie in Ruby?
Wow. Questo è folle. Epico. Periodo. Che diavolo ho fatto da così tanto tempo.Questo è impressionante. Molte grazie. – p0lAris