Ruby 標準庫 OptionParser

Juanito FatasThinking about what to do.

介紹一下 Ruby 的標準庫(Standard Library):OptionParser。

TIP: 有些標準庫也要 require 之後才能用,這個便是。

OptionParser 是用來打造 CLI 工具(腳本)的標準庫,看簡單的例子便知如何用:

$ touch optioner
$ chmod +x optioner

chmod +x optioner 賦予 optioner 這個腳本執行權限。

#!/usr/bin/env ruby

# Exit cleanly from an early interrupt
Signal.trap("INT") { abort }

require 'optparse'
require 'ostruct'

options = OpenStruct.new

OptionParser.new do |opts|
  opts.banner = "Lazy man's git tool."

  opts.on('-m', '--message MESSAGE', 'Set Commit Message') do |v|
    options.message = v
  end

  opts.on('-r', '--remote REMOTE', 'Set Push Remote') do |v|
    options.remote = v
  end
end.parse!

p options
  • Signal.trap("INT") { abort }

    這行是讓輸入 ./optioner,馬上狂按 CTRL-C 的人能優雅的退出。

  • 這裡使用了 OpenStruct,其實用 Hash 也可以,OpenStruct 方便取值而已。

  • #banner 是這個腳本的說明文字。

  • #on 的第二個參數

    如需要獲得傳入的值,不可以只寫 '--remote',這樣會被當做開關來對待(只有 truefalse)。

  • #on 的第三個參數

    這個選項的說明文字。

  • p options = puts options.inspect