Skip to content

Instantly share code, notes, and snippets.

@averyvery
Last active January 19, 2016 18:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save averyvery/f7b36b637e3040a64c1a to your computer and use it in GitHub Desktop.
Save averyvery/f7b36b637e3040a64c1a to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# coding: utf-8
require 'pbcopy'
project_data = File.read('projects.csv')
hours_data = File.read('hours.csv')
projects = project_data.split(/\n/)
projects.shift
dev_hours = hours_data.split(/\n/).map { |row| row.split(/\t/) }
dev_hours.shift
devs = dev_hours[1]
dev_names = {
'BDT' => 'Ben',
'GK' => 'Greg',
'JJF' => 'Jeremy Frank',
'NH' => 'Nate',
'CM' => 'Chris Manning',
'SH' => 'Solomon',
'TD' => 'Trevor',
'DT' => 'Dan',
'TJM' => 'Tommy',
'JG' => 'Jason',
'MZ' => 'Megan',
'DA' => 'Doug',
'JDF' => 'Jeremy Fields',
'PR' => 'Pat',
'BL' => 'Brian',
'MA' => 'Mike',
'EF' => 'Eli',
'LK' => 'Lawson',
'RF' => 'Ryan Foster',
'DE' => 'David',
'ZP' => 'Zachary',
'CJ' => 'Chris Jones',
'RS' => 'Ryan Stenberg'
}
dev_projects = Hash.new
devs.each do |dev|
dev_projects[dev] = {}
end
projects_with_dev_hours = {}
dev_hours.each_with_index do |project_hours, project_index|
next if project_index < 18
project_hours.each_with_index do |hours, dev_index|
unless hours == ""
dev = devs[dev_index]
project = projects[project_index]
projects_with_dev_hours[project] ||= {}
projects_with_dev_hours[project][dev] = hours
end
end
end
projects_for_standup = []
projects_with_dev_hours.each do |project_name, project_hours|
if project_hours.keys.count >= 2
projects_for_standup.push(project_name)
end
end
output = "h1. Engineering Standup — #{projects.first}\n"
projects_for_standup.sort.each do |project_name|
hours = projects_with_dev_hours[project_name]
resources = hours.map do |name, time|
[name, time.to_i]
end
max_hours = resources.map(&:last).max
leader = resources.shuffle.detect do |resource|
resource.last == max_hours
end
members = hours.reject{|name, allotment| name == leader.first}.keys.sort
output << "\nh3. #{project_name}\n"
output << "* *Leader: #{dev_names[leader.first]}*\n"
if members.any?
other_members = members.map {|a| dev_names[a]} .join(', ')
output << "* Other members: #{other_members}\n"
end
end
puts output
puts
puts '========='
puts
puts 'Copied to clipboard!'
pbcopy output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment