Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Ruby | CLI | Be Easy to Use | OptionParserを利用した使いやすいCLIインターフェース

概要

書籍 Build Awesome Command-Line Applications in Ruby2

Be Easy to Use

詳細

ほとんどのCLIアプリケーションは慣習に従って作られている。
慣習に従っておけばユーザーにとって覚えるのが簡単なツールになる。
そこで、慣習に従ったCLIを作る助力となるのが標準ライブラリのOptionParserです。

OptionParserはデフォルトでhelpオプション・versionオプションをサポートしています。
versionオプションを利用するには、OptionParserのインスタンス
program_name と version を設定しておく必要があります。

サンプル仕様

※書籍に載っていたものとは全く別のものです。自分独自の仕様で考えました。

指定した文字列を大文字か小文字に変換して出力します。
オプションの仕様は以下。

Short-From Option Long-From Option 内容
u upcase 大文字に変換
d downcase 小文字に変換

サンプルコード

require 'optparse'
require 'pp'

options = {}
opts = OptionParser.new do |opts|
  opts.on("-u", "--upcase", "大文字に変換します"){ |v| options[:upcase] = true }
  opts.on("-d", "--downcase", "小文字に変換します"){ |v| options[:downcase] = true }
  opts.on("-t TEXT", "--text=TEXT", "テキストを指定します"){ |text| options[:text] = text }
  opts.program_name = "up_down_converter"
  opts.version = "0.0.1"
end
opts.parse!(ARGV)
pp options

text = ARGV.first

if options[:upcase]
  puts options[:text].upcase
elsif options[:downcase]
  puts options[:text].downcase
else
  puts text
end

サンプル出力

$ ruby 1.rb -t HoGe -d
{:text=>"HoGe", :downcase=>true}
hoge
$ ruby 1.rb --text=HoGe --downcase
{:text=>"HoGe", :downcase=>true}
hoge
$ ruby 1.rb -t HoGe -u
{:text=>"HoGe", :upcase=>true}
HOGE
$ ruby 1.rb --text=HoGe --upcase
{:text=>"HoGe", :upcase=>true}
HOGE
$ ruby 1.rb -h
Usage: up_down_converter [options]
    -u, --upcase                     大文字に変換します
    -d, --downcase                   小文字に変換します
    -t, --text=TEXT                  テキストを指定します
$ ruby 1.rb --help
Usage: up_down_converter [options]
    -u, --upcase                     大文字に変換します
    -d, --downcase                   小文字に変換します
    -t, --text=TEXT                  テキストを指定します
$ ruby 1.rb -v
up_down_converter 0.0.1
$ ruby 1.rb --version
up_down_converter 0.0.1