bin/brand2csv in brand2csv-0.2.4 vs bin/brand2csv in brand2csv-0.2.5
- old
+ new
@@ -3,10 +3,11 @@
require 'pathname'
root = Pathname.new(__FILE__).realpath.parent.parent
$:.unshift root.join('lib') if $0 == __FILE__
require 'optparse'
+require "date"
require 'brand2csv'
def help
<<EOS
#$0 ver.#{Brand2csv::VERSION}
@@ -20,34 +21,80 @@
The trademark name is either a real brand name or a link to an image.
--swiss_only Fetch only trademarks from swiss owner
EOS
end
-parser = OptionParser.new
-opts = {}
-parser.on('--swiss_only') {|v| opts[:swiss_only] = true }
-parser.on_tail('-h', '--help') { puts help; exit }
-
-args = ARGV.dup
-begin
- parser.parse!(args)
-rescue OptionParser::MissingArgument,
- OptionParser::InvalidArgument,
- OptionParser::InvalidOption
- puts help
- exit 1
+def validates_timespan(arg)
+ valid = true
+ timespan = ""
+ dates = arg.gsub(/[^\d\.-]/, '').split("-")
+ catch (:error) do
+ dates.map.with_index do |d, i|
+ sep = (dates.length > 1 && i != 0) ? "-" : ""
+ begin
+ Date.parse(d)
+ timespan << sep + d
+ rescue ArgumentError
+ valid = false
+ elms = d.split(".")
+ prms = [elms[2], elms[1], -1].map(&:to_i)
+ begin
+ cand = Date.new(*prms).strftime("%d.%m.%Y")
+ if elms[0] == (elms - cand.to_s.split(".")).first
+ timespan << sep + cand.to_s
+ else
+ raise
+ end
+ rescue ArgumentError
+ timespan = "" # unknown
+ throw :error
+ end
+ end
+ end
+ end
+ message = nil
+ unless valid
+ if timespan.empty?
+ message = "Timespan is invalid"
+ else
+ message = "Did you mean #{timespan} ?"
+ end
+ end
+ [valid, message]
end
+if $0 == __FILE__
+ parser = OptionParser.new
+ opts = {}
+ parser.on('--swiss_only') {|v| opts[:swiss_only] = true }
+ parser.on_tail('-h', '--help') { puts help; exit }
-unless args.size >= 1
- puts help
- exit 1
-end
+ args = ARGV.dup
+ begin
+ parser.parse!(args)
+ rescue OptionParser::MissingArgument,
+ OptionParser::InvalidArgument,
+ OptionParser::InvalidOption
+ puts help
+ exit 1
+ end
-begin
- Brand2csv::run(args[0], args[1], opts[:swiss_only])
-rescue Interrupt
- puts "Unterbrochen. Breche mit Fehler ab"
- exit 1
-end
+ unless args.size >= 1
+ puts help
+ exit 1
+ end
-puts "#{__FILE__} completed successfully" if $VERBOSE
+ valid,message = validates_timespan(args[0])
+ unless valid
+ puts message
+ exit 1
+ end
+
+ begin
+ Brand2csv::run(args[0], args[1], opts[:swiss_only])
+ rescue Interrupt
+ puts "Unterbrochen. Breche mit Fehler ab"
+ exit 1
+ end
+
+ puts "#{__FILE__} completed successfully" if $VERBOSE
+end