コマンドライン引数の解析には、通常GetOptライブラリを使用しました。 これはかなり不便なライブラリであり、 Docoptを偶然見つけてうれしく思いました。
スタート。
使用を開始するのは非常に簡単です。出力行を解析するようスクリプトに教えるには、最初にライブラリを接続する必要があります。
require 'docopt'
その後、変数を初期化して適切な値を割り当てることができます。
doc =<<EOF Usage: #{__FILE__} add <opt1> <opt2> –input=<something> –verbose <p>Option: -h –help –cat –input=<something> [default: my.txt] EOF
ここで、変数をパラメーターとして渡すだけです。
begin arguments = Docopt::docopt(doc) rescue Docopt::Exit => e puts e.message exit end
引数が指定されていない場合、または-hまたは-helpスイッチを使用してスクリプトが呼び出された場合 、入力したメッセージが表示されます。
他の場合では、ライブラリ自体がdoc変数から文字列を解析し、すべてをハッシュに入れます。これは既にarguments変数に割り当てられています。
~/myscript add test argument2 --input=local.txt {"add"=>true, "<opt1>"=>"test", "<opt2>"=>"argument2", "--input"=>"local.txt", "--verbose"=>false, "--help"=>false}
ご覧のとおり、データは便利なハッシュに配置されており、標準のメカニズムを使用してそこから収集できます。
puts arguments["<opt1>"] puts arguments["--input"]
このライブラリを使用すると、オプションの厳密に必要なパラメーターを使用できます。 必須は括弧()で示され、オプションは四角[]
とりわけ、 Usage行の下にリストすることにより、いくつかの使用基準を導入できます。
Usage: #{__FILE__} add <opt1> <opt2> --input=<something> --verbose #{__FILE__} del --input=<something> --sure
Options:行の下で変数のデフォルト値を設定することもできます:
--input=<something> [default: my.txt]
引数[ -input ]ハッシュの値は、特に指定がない限り、my.txtと等しくなります。
トラブルなし-入力を読み取るには、$ stdinチャネルを明示的に使用する必要があります
$stdin.gets.chomp
終わり
実際、これがこのライブラリについて知っておくべきすべてです。