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"}
参考文献