class Vgcal::Handlers::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