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.