lib/agig/optparse.rb in agig-0.1.5 vs lib/agig/optparse.rb in agig-0.2.0
- old
+ new
@@ -1,15 +1,16 @@
require "optparse"
module Agig::OptParser
def self.parse!(argv)
opts = {
- :port => 16705,
- :host => "localhost",
- :log => nil,
- :debug => false,
- :foreground => false,
+ port: 16705,
+ host: "localhost",
+ interval: 30,
+ log: nil,
+ debug: false,
+ foreground: false,
}
OptionParser.new do |parser|
parser.instance_eval do
self.banner = "Usage: #{$0} [opts]"
@@ -22,10 +23,14 @@
on("-h", "--host [HOST=#{opts[:host]}]", "host name or IP address to listen") do |host|
opts[:host] = host
end
+ on("-i", "--interval [INTERVAL=#{opts[:interval]}]", "set a retrieving interval") do |interval|
+ opts[:interval] = interval
+ end
+
on("-l", "--log LOG", "log file") do |log|
opts[:log] = log
end
on("-d", "--debug", "Enable debug mode") do |debug|
@@ -40,8 +45,20 @@
parse!(argv)
end
end
- opts
+ self.cast opts
+ end
+
+ def self.cast(opts)
+ opts.inject({}) {|r, i|
+ key, value = i[0], i[1]
+ r.update key => case value
+ when nil then true
+ when /\A\d+\z/ then value.to_i
+ when /\A(?:\d+\.\d*|\.\d+)\z/ then value.to_f
+ else value
+ end
+ }
end
end