class Xfel::Timew::Report

Main entry point for TimeWarrior report

Public Class Methods

new() click to toggle source
# File lib/xfel/timew/report.rb, line 12
def initialize
  table = Table.new
  read.each do |x|
    worklog = convert(x)
    next if worklog.nil?

    Jira.new(worklog)
    table.add(worklog)
  end
  table.render
end

Public Instance Methods

convert(item) click to toggle source
# File lib/xfel/timew/report.rb, line 54
def convert(item)
  key = key_from_tags(item['tags'])
  return unless key && item['end']

  start = DateTime.parse(item['start'])
  st = start.strftime('%Y-%m-%dT%H:%M:%S.%L%z')
  finish = DateTime.parse(item['end'])
  duration = finish.to_time.to_i - start.to_time.to_i
  project = project_from_key(key)

  { project: project, key: key, start: st, duration: duration }
end
key_from_tags(tags) click to toggle source
# File lib/xfel/timew/report.rb, line 41
def key_from_tags(tags)
  return unless tags

  tags.each do |x|
    return x unless (x =~ /^[A-Z]+-[0-9]+$/).nil?
  end
  nil
end
project_from_key(key) click to toggle source
# File lib/xfel/timew/report.rb, line 50
def project_from_key(key)
  key.split('-')[0]
end
read() click to toggle source
# File lib/xfel/timew/report.rb, line 28
def read
  header_finished = false
  json_str = ''
  while (line = gets)
    if !header_finished
      header_finished = line.length == 1
    else
      json_str += line
    end
  end
  JSON.parse(json_str)
end
task_rc() click to toggle source
# File lib/xfel/timew/report.rb, line 24
def task_rc
  'rc.report.list.columns="description" rc.report.list.labels="Notes" rc.verbose=label'
end