Kodama's home / tips.
今まで ruby スクリプトで 引数を参照する場合素で ARGV を使っていたが, getoptlong を使ってみる事にした. ついでに, 毎回書くのが面倒なので emacs でスクリプトを書くとき, テンプレートを自動的に書き込むようにしてみた.
;; Insert ruby-template.rb
(add-hook 'ruby-mode-hook
(function (lambda ()
(if (zerop (buffer-size))
(insert-file "~/lib/ruby/ruby-template.rb")))))
#!/usr/local/bin/ruby
require "getoptlong"
if $0 == __FILE__ then
verbose=false
r_arg=""
o_arg=""
def usage
puts "usage: foo.rb [-h] [-v]"
puts "Options:\n";
puts "-h help\n";
puts "-v vsebose\n"
end;
=begin
if ARGV.size==0 then usage; end
ARGV.each{|opt|
case opt
when "-h"; usage;
end
}
=end
arg_parser=GetoptLong.new
arg_parser.set_options(
["-h", "--help" , GetoptLong::NO_ARGUMENT],
["-v", "--verbose" , GetoptLong::NO_ARGUMENT],
["-r", GetoptLong::REQUIRED_ARGUMENT],
["-o", GetoptLong::OPTIONAL_ARGUMENT]
)
arg_parser.each{|opt,arg|
begin
# puts (opt+"=>"+arg)
case opt
when "-v"; verbose=true;
when "-h"; usage; exit
when "-r"; r_arg=arg;
when "-o"; if arg!=""; o_arg=arg; else o_arg=0;end;
end;
rescue => err; puts err; break
end
}
puts "verbose= #{verbose}"
puts "r= #{r_arg}"
puts "o= #{o_arg}"
end
Kodama's home / tips.