LoginSignup
0
0

optparseでコマンドラインのオプションを使えるようにする

Posted at

はじめに

コマンドラインから任意のオプションを設定するoptparseについて学習したので
その使い方についてまとめます。

使い方

optparseを使用する際は公式リファレンスより以下の3つの工程が必要になります。

  1. OptionParser オブジェクト opt を生成する。
  2. オプションを取り扱うブロックを opt に登録する。
  3. opt.parse(ARGV) でコマンドラインを実際に parse する。

コードでは以下のようになります。

code
require 'optparse'
opt = OptionParser.new

opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }

opt.parse!(ARGV)
p ARGV

↑のコードを記載したrubyファイルを起動する際にオプションとして-a-b
使用できるようになりそのオプションの処理が行われます。

1.OptionParser オブジェクト opt を生成する。

まずruby標準搭載のライブラリであるoptparseをrequireします。
その後にOptionParserクラスのインスタンスを生成します。
以後このインスタンスでオプションの設定を行います。

code
require 'optparse'
opt = OptionParser.new

2.オプションを取り扱うブロックを opt に登録する。

インスタンスメソッドのonで入力可能にするオプションと
そのオプションの処理を設定します。
処理内容はブロック内に記載しブロック変数にはオプションの引数つまり
コマンドラインでオプションの次に入力した値が入ります。
ここで注意しなければならないのがonメソッドがよばれた時点では
ブロック内の処理が行われていないことです。
ブロック内で引数を別の変数に入れて利用するケースで思わぬ不具合が出る
ということがあるので気をつけて下さい。
処理が行われるタイミングは後述のparseメソッドに付随して説明します。

code
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }

3.opt.parse(ARGV) でコマンドラインを実際に parse する。

perseメソッドでオプションの引数を解析しARGVにその値が入ります。
また、先ほど説明したonメソッド内の処理はperseメソッドがよばれたタイミングで
行われます。

code
opt.parse!(ARGV)
p ARGV

最後に

以上optparseの解説になりました。
使い方はさまざまあると思いますので気になる方はぜひ公式リファレンスも活用して
学習してみて下さい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0