Rubyのoptparseでgccみたいなオプションを取る

Posted on

やりたいことは、これ。

1
./hoge source -o output

sourceにオプションスイッチが無いのがミソ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
options = {
  :input => $stdin,
  :output => $stdout
}

optp = OptionParser.new
optp.on("-o outputfile", String) {|out_filename|
  options[:output] = File.open(out_filename, 'w')
}

remain_opts = optp.permute(ARGV)
if (remain_opts.size > 1)
  raise "Invalid input count."
elsif (remain_opts.size == 1)
  options[:input] = File.open(remain_opts[0], 'r')
end

OptionParser#parseでなくて、OptionParser#permuteを使う。