[Ruby]オプションの使い方・取得の仕方(OptionParser)
Rubyのoptionを扱うOptionParserの使い方を簡単に書きます。
OptionParser
コマンドラインのオプションを取り扱うためのクラスです。
class OptionParser (Ruby 2.1.0)
使い方
公式ドキュメントにも書いてありますが、使い方の流れは以下になります。
1. OptionParser オブジェクト opt を生成する。
2. オプションを取り扱うブロックを opt に登録する。
3. opt.parse(ARGV) でコマンドラインを実際に parse する。
各項目を詳しく
1. OptionParser オブジェクト opt を生成する。
require 'optparse' opt = OptionParser.new
- オブジェクトの生成は普通にoptparseをrequireしてnew()でインスタンス化するだけです。
2. オプションを取り扱うブロックを opt に登録する。
基本文法
opt.on("short option" ,"long option", "Explanation") {|v| options[:value] = v} # short option => 一文字の場合のオプション(-p, -d等) # long option => 複数文字の場合のオプション(--process, --daemon等) # Explanation => オプションの説明(-hで表示される)
実際の設定
options = {} opt.on("-f" ,"--foo", "引数なしだよ") {|v| options[:f] = v} opt.on("-b", "--bar <param>", "引数ありだよ") {|v| options[:bar] = v}
- 1行目で各オプションの引数を格納するHashを作成します
- 2行目以降で各オプションの実際の設定をします
オプションバナーとヘルプオプションの設定
opts.banner="usage:#{File.basename($0)} -f --bar [value]" opts.on("-h", "--help", "Show this message") { puts opts; exit }
- #{File.basename($0)}はこのファイルのファイル名を取得しています
確認
実際のソースコード(opt.rb)
require 'optparse' opt = OptionParser.new options = {} opt.on("-f" ,"--foo", "引数なしだよ"){|v| options[:f] = v} opt.on("-b", "--bar <param>", "引数ありだよ") {|v| options[:bar] = v} opt.banner="usage:#{File.basename($0)} -f --bar [value]" opt.on("-h", "--help", "Show this message") { puts opt; exit } opt.parse!(ARGV) puts options
実行結果
$ ruby opt.rb -f --bar arg2 # =>{:f=>true, :bar=>"arg2"} $ ruby opt.rb -h usage:opt.rb -f --bar [value] -f, --foo 引数なしだよ -b, --bar <param> 引数ありだよ -h, --help Show this message