class Done::Options
Public Class Methods
default_options()
click to toggle source
# File lib/done_log/options.rb, line 60 def self.default_options { action: :edit, time_period: Date.today } end
parse!(args)
click to toggle source
# File lib/done_log/options.rb, line 9 def self.parse!(args) options = {} days = args.grep(/^-\d+$/) unless days.empty? if days.length > 1 raise "Expected only one day, got #{days.inspect}" end days = days.first args.delete days options[:time_period] = Date.today - days.to_i.abs options[:action] ||= :edit end OptionParser.new do |opts| opts.banner = "Usage: done_log [options]" opts.on "-NUM", OptionParser::DecimalInteger, "Go back NUM days" opts.on "-e", "--edit", "Edit log(s)" do options[:action] = :edit end opts.on "-s", "--show", "Display log(s)" do options[:action] = :show end opts.on "-d", "--date [DATE]", Date, "Select date" do |date| options[:time_period] = date end opts.on "--sprint", "Last 14 days" do options[:time_period] = (Date.today - 14)..Date.today options[:action] ||= :show end opts.on "-c", "--color-date COLOR", Done::ANSIColors.colors, "Set color for dates" do |color| options[:date_color] = color.to_sym end opts.on_tail "-h", "--help", "Show this message" do puts opts exit end end.parse(args) default_options.merge(options) end