module FinnishHolidays::CLI
Public Class Methods
run()
click to toggle source
# File lib/finnish-holidays/cli.rb, line 10 def self.run() options = {} optparse = OptionParser.new do |opts| options[:count] = 3 opts.on('-cCOUNT', '--count=COUNT', 'Number of holidays to list') do |count| options[:count] = count.to_i end options[:include_weekends] = false opts.on('-a', '--all', 'Include holidays falling on a weekend') do options[:include_weekends] = true end opts.on('-h', '--help', 'Show this screen') do puts opts exit 0 end opts.on('-v', '--version', 'Show version') do puts FinnishHolidays::VERSION exit 0 end options[:year] = nil opts.on('-yYEAR', '--year=YEAR', 'List holidays by year') do |year| options[:year] = year.to_i end options[:month] = nil opts.on('-mMONTH', '--month=MONTH', 'List holidays by month') do |month| options[:month] = month.to_i end options[:language] = nil opts.on('-lLANGUAGE', '--language=LANGUAGE', 'Translate holidays (fi|sv)') do |language| if !['fi', 'sv'].include? language puts 'Language must be fi (Finnish) or sv (Swedish).' exit 1 end options[:language] = language end end optparse.parse! if (options[:month].is_a? Integer) && (!options[:year].is_a? Integer) puts 'You must also specify a year with --year=YEAR' exit 1 elsif (options[:year].is_a? Integer) && (options[:month].is_a? Integer) holidays = FinnishHolidays.month(options[:month], options[:year], options[:include_weekends]) elsif options[:year].is_a? Integer holidays = FinnishHolidays.year(options[:year], options[:include_weekends]) else holidays = FinnishHolidays.next(options[:count], options[:include_weekends]) end holidays.each do |holiday| d = Date.new(holiday['year'], holiday['month'], holiday['day']) date = d.strftime('%a, %b %e, %Y') description = holiday['description'] if ['fi', 'sv'].include? options[:language] description = FinnishHolidays::Translate.into(options[:language], holiday['description']) end puts "#{date} #{description}" end end