class Cykl::Initializer

Attributes

cycle_time[R]

Public Instance Methods

time(repo = nil) click to toggle source
# File lib/cykl/initializer.rb, line 18
def time(repo = nil)
  initializer_message(repo, options)
  list_of_issues(repo, options)

  puts_and_flush(cycle_time_message)
rescue Octokit::NotFound
  puts_and_flush('Sorry, Github couldn\'t find anything')
end

Private Instance Methods

average_cycle_time(issues) click to toggle source
# File lib/cykl/initializer.rb, line 39
def average_cycle_time(issues)
  lifetimes = []

  issues.each do |issue|
    lifetimes << ((issue.closed_at - issue.created_at) / seconds_in_a_day)
  end

  calculate_average(lifetimes)
end
calculate_average(data) click to toggle source
# File lib/cykl/initializer.rb, line 49
def calculate_average(data)
  total = data.inject(:+)

  (total / data.count).round(2)
end
cycle_time_message() click to toggle source
# File lib/cykl/initializer.rb, line 34
def cycle_time_message
  "\nYour average cycle time is #{cycle_time}" +
  (cycle_time == 1.00 ? 'day' : 'days')
end
initializer_message(repo, options) click to toggle source
# File lib/cykl/initializer.rb, line 59
def initializer_message(repo, options)
  if options.any? && !options[:label].empty?
    puts_and_flush(
      "Attempting to pull in your #{options[:label]} issues \n" +
      "from #{repo}, please wait..."
    )
  else
    puts_and_flush("Pulling in your issues from #{repo}, please wait...")
  end
end
list_of_issues(repo, options) click to toggle source
# File lib/cykl/initializer.rb, line 29
def list_of_issues(repo, options)
  issues = Issues.new.list_issues(repo, options)
  @cycle_time = average_cycle_time(issues)
end
puts_and_flush(msg) click to toggle source
# File lib/cykl/initializer.rb, line 70
def puts_and_flush(msg)
  puts msg
  STDOUT.flush
end
seconds_in_a_day() click to toggle source
# File lib/cykl/initializer.rb, line 55
def seconds_in_a_day
  (24 * 60 * 60)
end