bin/rtime
#!/usr/bin/env ruby
require "thor"
require "rtime"
module RTime
# RTime command-line interface base class
class CLI < Thor
class_option(
:night_only,
aliases: ["-n"], type: :boolean,
desc: "Only generates timestamp between 20:00 - 06:00"
)
class_option(
:version,
aliases: ["-v"], type: :boolean, desc: "Prints the version of rtime"
)
desc "generate <date1> <date2> <coverage>", "Generates random timestamp"
def generate date1, date2, coverage
date_matcher = /^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/
coverage_match = /^(?<coverage>\d|[1-9][0-9]|10{2})%$/.match coverage
if date_matcher =~ date1 && date_matcher =~ date2 && coverage_match
timestamps = RTime::RTS.timestamps(
{ start: date1, end: date2 },
coverage_match[:coverage].to_f / 100,
options
)
timestamps.each { |timestamp| puts "\n#{timestamp}" }
else
puts "Error: invalid argument!\n\n\
Example: rtime gen 20170417 20170423 85%"
end
end
desc "", "Describe available commands"
def default
options[:version] ? puts(RTime::VERSION) : help
end
map %W[gen g] => :generate
default_task :default
end
end
RTime::CLI.start(ARGV)