optparseとは
標準ライブラリのひとつ
コマンドラインのオプションを取り扱うためのライブラリ
使い方
基本的なパターン
-
optparseをrequireする -
OptionParserオブジェクトを生成する -
onメソッドを用いて、オプションを取り扱うためのブロックを登録する -
parseメソッドを用いて、与えられたargvをパースする
sample.rb
require 'optparse'
opt = OptionParser.new
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
opt.parse(ARGV)
p ARGV
実行結果
$ ruby sample.rb
#=> []
$ ruby sample.rb -a foo -b bar
#=> true
#=> true
#=> ["-a", "foo", "-b", "baz"]
ロングオプション・説明
onメソッドでショートオプションに追加して、ロングオプション・説明を渡せばよい
sample.rb
require 'optparse'
opt = OptionParser.new
opt.on('-a', '--a_long_option', 'a_description') {|v| p v }
opt.parse(ARGV)
p ARGV
引数の必須かどうかの記述
- 引数が必須の場合
-
onメソッドでオプションの末尾に文字列を追加する - 下記例だと、
valueを追加している
-
- 引数が省略可能な場合
-
onメソッドでオプションの末尾に[]で囲った文字列を追加する - 下記例だと、
[value]を追加している
-
sample.rb
require 'optparse'
opt = OptionParser.new
# 通常の記述
opt.on('-a') {|v| p v }
# 引数が必須
opt.on('-b value') {|v| p v }
# 引数は省略可能
opt.on('-c [value]') {|v| p v }
opt.parse(ARGV)
p ARGV
引数の型指定
onメソッドで型を追記する
sample.rb
require 'optparse'
opt = OptionParser.new
opt.on('-a', '--a_long A', Integer) {|v| p v }
opt.parse(ARGV)
p ARGV
ARGV
ARGVにコマンドラインから渡された引数が配列として渡される。
ARGVでオプションを定義することができる。
複雑なオプションが必要ない場合はARGVを使うのがおすすめ。
オプションの指定方法はgetoptsメソッドでオプションを指定するだけでOK。
- ショートネームのオプション
- ショートネームのオプションを文字列で指定する。
- オプションが引数をとる場合は直後に
:を付ける。- aという引数をとるオプションを追加する場合:
a: - aとbという引数をとるオプションを追加する場合:
a:b: - aという引数をとらないオプションとbという引数をとるオプションを追加する場合:
ab:
- aという引数をとるオプションを追加する場合:
- ロングネームのオプション
- ショートネームのオプションを文字列で指定する。
- オプションが引数をとる場合は直後に
:を付ける。 - デフォルト値は
:の直後に指定する。- bufsizeという引数をとらないオプションを追加する場合:
bufsize - bufsizeという引数をとるオプションを追加する場合:
bufsize: - デフォルト値1024のbufsizeという引数をとるオプションを追加する場合:
bufsize:1024
- bufsizeという引数をとらないオプションを追加する場合:
sample.rb
require 'optparse'
params = ARGV.getopts("a:b:")
p params
実行結果
$ ruby sample.rb -a foo -b bar
#=> {"a"=>"foo", "b"=>"bar"}
参考文献