OptionParserまとめ

あまりコマンドラインを処理するプログラムを書かない…というよりはオプションが色々あるような立派なコマンドラインアプリを今まであまり書いてなかったのでOptionParserの使い方に苦労したのでまとめておく。柔軟で慣れると楽だけど,暗黙的なところを理解するまでがよく分からないといった感じな気がする。

require 'optparse'

ARGV.options do |opts|
  begin
    opts.separator "このプログラムはRubyのライブラリOptParseを理解するために作製されました。以下のようなオプションをとります"
    opts.on('--[no-]hoge=NUM', Integer, "hoge is number") {|hoge| @hoge = hoge }

    @hoge ||= 300 
    opts.parse!

  rescue OptionParser::ParseError => e
    puts opts
    exit
  end 
end

自分が使うときはほとんどこんな感じで使いそう。無駄に変数増やさなくてよいこととエラーの際の対応がヘルプを表示して終了にまとめられるのが良いところだけど,この書き方だと標準的なARGVの引数の説明とかを--helpで出すには困るかも。opts.separatorとしているところも,別のメソッドで詳しい説明みたいなのを表示できれば良いのだけど。