optopus 0.1.4

https://rubygems.org/gems/optopus
https://bitbucket.org/winebarrel/optopus

これは何?

optparseのラッパーです。µ-optparseみたいなものです。

µ-optparseとの違いは…

  1. オプションの説明をオプションの前の行に書ける(横にも書ける)
  2. ハッシュのキーと引き数名を別々に定義
  3. 型チェックができる(もしかしたらµ-optparseでもできるかも)
  4. 設定ファイル読み込みオプションを簡単に定義できる
  5. 後処理を書ける
  6. 例外をハンドルできる

正直、機能はそんなに違わない思います。

サンプルコード

#!/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