bin/wasserstand in wasserstand-0.0.10 vs bin/wasserstand in wasserstand-0.0.11
- old
+ new
@@ -4,17 +4,32 @@
Bundler.require
require 'wasserstand'
require 'optparse'
-OptionParser.new do |opts|
+options = {}
+
+params = OptionParser.new do |opts|
opts.banner = <<HERE
-Wasserstand provides water level information as provided by PegelOnline.
+Shows water level information as provided by PegelOnline.
Usage:
- #{File.basename($0)} [options] [WATERWAY | LEVEL]
+ #{File.basename($0)} [options] [WATERWAY | LEVEL | WATERWAY LEVEL]
+Examples:
+ # all waterways
+ #{File.basename($0)}
+
+ # single waterway
+ #{File.basename($0)} Rhein
+
+ # single level
+ #{File.basename($0)} Koblenz
+
+ # single level that happens to have the same name as a waterway
+ #{File.basename($0)} Ilm Ilmenau
+
Author:
Nicolas E. Rabenau nerab@gmx.at
Homepage:
http://github.com/nerab/wasserstand
@@ -31,36 +46,27 @@
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)
+ options[:url] = url
end
+
+ opts.on("-c", "--cache [URL]", "Use memcached at URL instead of heap. URL defaults to 127.0.0.1:11211.") do |url|
+ options[:cache] = url || '127.0.0.1:11211'
+ end
end.parse!
-query = ARGV.shift
+Wasserstand.provider = Wasserstand::Provider::PegelOnline.new(options[:url])
-if query.nil?
- Wasserstand::Waterway.all.each{|ww| puts "#{ww.name} (#{ww.levels.size} levels)"}
-else
- begin
- waterway = Wasserstand::Waterway[query]
+if options[:cache]
+ Bundler.require(:default, :dalli)
+ Wasserstand.logger.info("Using memcached at #{options[:cache]}")
+ Wasserstand.provider.cache = Dalli::Client.new(options[:cache], :expires_in => 60 * 60)
+end
- 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
+begin
+ Wasserstand::Commandline.get(params)
+rescue
+ STDERR.puts $!
+ $!.backtrace.each{|msg| Wasserstand.logger.debug(msg)}
end