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