https://rubygems.org/gems/optopus
https://bitbucket.org/winebarrel/optopus
これは何?
optparseのラッパーです。µ-optparseみたいなものです。
µ-optparseとの違いは…
- オプションの説明をオプションの前の行に書ける(横にも書ける)
- ハッシュのキーと引き数名を別々に定義
- 型チェックができる(もしかしたらµ-optparseでもできるかも)
- 設定ファイル読み込みオプションを簡単に定義できる
- 後処理を書ける
- 例外をハンドルできる
正直、機能はそんなに違わない思います。
サンプルコード
#!/usr/bin/env ruby require 'rubygems' require 'optopus' opts = optopus do option :info, '-I', :desc => 'program information' desc 'print lots of debugging information' option :debug, '-d', '--debug' desc 'log messages to FILE.' option :output_file, '-o', '--output-file FILE', :default => '/var/log/xxx.log' desc 'set number of retries to NUMBER (0 unlimits)' option :tries, '-t', '--tries NUMBER', :type => Integer, :default => 0 do |value| # custom validation invalid_argument if value < 0 end desc 'comma-separated list of accepted extensions' option :accept, '-A', '--accept LIST', :type => Array, :default => [] desc 'access protocol' option :protocol, '-P', '--protocol PROTO', :type => [:http, :ftp] desc 'access timestamp' option :timestamp, '-T', '--timestamp TIME', :type => Time # read yaml config file and overwrite options config_file '-c', '--config-file FILE' after do |options| # postprocessing # options.each { ... } end error do |e| abort(e.message) end end p opts