class Vgcal::Handlers::Describer

Describer

Public Instance Methods

init() click to toggle source
# File lib/vgcal/handlers/describer.rb, line 14
def init
  vgcal_dir = "#{Dir.home}/.vgcal"
  cred_json = "#{vgcal_dir}/credentials.json"
  dot_env   = "#{vgcal_dir}/.env"
  Dir.mkdir(vgcal_dir, 0o755) unless Dir.exist?(vgcal_dir)
  FileUtils.cp('template-credentials.json', cred_json) unless File.exist?(cred_json)
  FileUtils.cp('template.env', dot_env) unless File.exist?(dot_env)
  puts "Fix the __FIX_ME__ in #{cred_json} and #{dot_env}"
end
show() click to toggle source
# File lib/vgcal/handlers/describer.rb, line 33
def show
  Dotenv.load("#{Dir.home}/.vgcal/.env")
  mcal   = MyCalendar.new(start_date, end_date)
  events = mcal.events

  case options[:output]
  when 'json'
    stdout_json(mcal.tasks(events), mcal.invited_meetings(events))
  when 'text'
    stdout_default(mcal.tasks(events), mcal.invited_meetings(events))
  else
    stdout_default(mcal.tasks(events), mcal.invited_meetings(events))
  end
end
version() click to toggle source
# File lib/vgcal/handlers/describer.rb, line 50
def version
  puts VERSION
end

Private Instance Methods

end_date() click to toggle source
# File lib/vgcal/handlers/describer.rb, line 135
def end_date
  e_date = if options[:'current-week']
             if Date.today.sunday?
               (Date.today + 6).to_s
             else
               (Date.today + (6 - Date.today.wday)).to_s
             end
           elsif options[:'next-week']
             if Date.today.sunday?
               (Date.today + 13).to_s
             else
               (Date.today + 7 + (6 - Date.today.wday)).to_s
             end
           elsif options[:date]
             case options[:date][0]
             when '+'
               (Date.today + options[:date].delete('+').to_i).to_s
             when '-'
               (Date.today - options[:date].delete('-').to_i).to_s
             else
               (Date.today + options[:date].to_i).to_s
             end
           elsif options['start-date'] && options['end-date']
             Date.parse(options['end-date'].to_s)
           else
             Date.today.to_s
           end
  "#{e_date}T23:59:59+09:00"
end
start_date() click to toggle source
# File lib/vgcal/handlers/describer.rb, line 105
def start_date
  s_date = if options[:'current-week']
             if Date.today.sunday?
               Date.today.to_s
             else
               (Date.today - Date.today.wday).to_s
             end
           elsif options[:'next-week']
             if Date.today.sunday?
               (Date.today + 7).to_s
             else
               (Date.today + Date.today.wday - 1).to_s
             end
           elsif options[:date]
             case options[:date][0]
             when '+'
               (Date.today + options[:date].delete('+').to_i).to_s
             when '-'
               (Date.today - options[:date].delete('-').to_i).to_s
             else
               (Date.today + options[:date].to_i).to_s
             end
           elsif options['start-date'] && options['end-date']
             Date.parse(options['start-date'].to_s)
           else
             Date.today.to_s
           end
  "#{s_date}T00:00:00+09:00"
end
stdout_default(my_tasks, invited_meetings) click to toggle source
# File lib/vgcal/handlers/describer.rb, line 79
def stdout_default(my_tasks, invited_meetings)
  puts "Period: #{start_date} - #{end_date}"
  puts
  my_task_time = 0
  my_tasks.select do |n|
    my_task_time += n[1]
  end
  puts "My tasks: #{my_task_time}h(#{(my_task_time / 8).round(2)}day)"
  my_tasks.each do |task|
    if my_tasks.is_a?(String)
      puts "  ・#{task[0]}: #{task[1]}"
    else
      puts "  ・#{task[0]}: #{task[1]}h"
    end
  end

  meeting_time = 0
  invited_meetings.select do |m|
    meeting_time += m[1]
  end
  puts "Invited meetings: #{meeting_time}h(#{(meeting_time / 8).round(2)}day)"
  invited_meetings.each do |meeting|
    puts "  ・#{meeting[0]}: #{meeting[1]}h"
  end
end
stdout_json(my_tasks, invited_meetings) click to toggle source
# File lib/vgcal/handlers/describer.rb, line 56
def stdout_json(my_tasks, invited_meetings)
  hash = {
    'start_date': "#{start_date}",
    'end_date':   "#{end_date}",
    'tasks':      []
  }
  my_tasks.each do |task|
    hash[:tasks].push ({
      "title":     task[0],
      "time":      task[1],
      "task_type": 'my_task'
    })
  end
  invited_meetings.each do |meeting|
    hash[:tasks].push ({
      'title':     meeting[0],
      'time':      meeting[1],
      'task_type': 'invited_meeting'
    })
  end
  puts hash.to_json
end