class Hanreki::CLI

Public Instance Methods

blank() click to toggle source
# File lib/hanreki/cli.rb, line 14
def blank
  year, month = parse_month_in_options(options, Date.today.next_month)
  schedule = Schedule.initialize_for_month(year, month)
  raise 'file already exists' if schedule.master_file_exists?
  schedule.out_master
end
edit() click to toggle source
# File lib/hanreki/cli.rb, line 23
def edit
  year, month = parse_month_in_options(options, Date.today)
  master_file = sprintf('master/%04d%02d.csv', year, month)
  raise 'file does not exist' unless File.exists? master_file

  editor = ENV['CAMPHOR_SCHEDULE_EDITOR'] || ENV['EDITOR'] || 'vi'
  system "#{editor} #{master_file}"
  validate
end
sync() click to toggle source
# File lib/hanreki/cli.rb, line 34
def sync
  schedule = load_schedule
  schedule.sort_by_date!
  schedule.out_ical
  schedule.out_json
end
validate() click to toggle source
# File lib/hanreki/cli.rb, line 42
def validate
  schedule = Schedule.new
  schedule = load_schedule
end
version() click to toggle source
# File lib/hanreki/cli.rb, line 48
def version
  puts "hanreki v#{VERSION}"
end

Private Instance Methods

load_schedule() click to toggle source
# File lib/hanreki/cli.rb, line 55
def load_schedule()
  schedule = Schedule.new
  begin
    schedule.load_master_files
  rescue ValidationError => e
    message = 'validation error'
    if e.event
      message += " at line #{e.event.line_number}" if e.event.line_number
      message += " in #{e.event.filename}" if e.event.filename
      message += "\n#{e.event.row.to_s.strip}" if e.event.row
    end
    message += "\n#{e}"
    puts message
    exit 1
  end
  schedule
end
parse_month_in_options(options, default = nil) click to toggle source

Parse a string (YYYYMM) in options and returns [YYYY, MM]

# File lib/hanreki/cli.rb, line 74
def parse_month_in_options(options, default = nil)
  date = options[:date]
  if options[:date]
    begin
      Time.parse_month(options[:date].to_s)
    rescue ArgumentError => e
      raise "invalid date option: #{e.message}"
    end
  elsif default
    [default.year, default.month]
  end
end