bin/wasserstand in wasserstand-0.0.9 vs bin/wasserstand in wasserstand-0.0.10

- old
+ new

@@ -4,13 +4,63 @@ Bundler.require require 'wasserstand' require 'optparse' -options = {} OptionParser.new do |opts| - opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| - options[:verbose] = v + opts.banner = <<HERE +Wasserstand provides water level information as provided by PegelOnline. + +Usage: + #{File.basename($0)} [options] [WATERWAY | LEVEL] + +Author: + Nicolas E. Rabenau nerab@gmx.at + +Homepage: + http://github.com/nerab/wasserstand + +Options: +HERE + + opts.on("-w", "--verbose", "Run verbosely") do |v| + Wasserstand.logger.level = Log4r::INFO + Wasserstand.logger.info("Enable info logger") end + + opts.on("-t", "--trace", "Run with traces enabled") do |v| + Wasserstand.logger.level = Log4r::ALL + Wasserstand.logger.debug("Enable debug logger") + end + + opts.on("-u", "--url URL", "Use URL to fetch levels") do |url| + Wasserstand.logger.info("Using URL #{url}") + Wasserstand.provider = Wasserstand::Provider::PegelOnline.new(url) + end end.parse! -puts Wasserstand::Waterway['BODENSEE'].pegel.first.last.messwerte.first +query = ARGV.shift + +if query.nil? + Wasserstand::Waterway.all.each{|ww| puts "#{ww.name} (#{ww.levels.size} levels)"} +else + begin + waterway = Wasserstand::Waterway[query] + + if waterway + puts "#{waterway.name} has #{waterway.levels.size} levels:" + waterway.levels.sort_by{|name, level| level.km}.each{|name, level| puts "#{name} (km #{level.km}): #{level.measurements.last}"} + else + level = Wasserstand::Level[query] + + if level.nil? + STDERR.puts "#{File.basename($0)}: No waterway nor level found that matches '#{query}." + else + puts "Level #{level.name} (#{level.waterway}, km #{level.km}):" + level.measurements.each{|measurement| puts measurement} + end + end + rescue + STDERR.puts $! + $!.backtrace.each{|msg| Wasserstand.logger.debug(msg)} + end +end