lib/pair_see/seer.rb in pair_see-0.1.4 vs lib/pair_see/seer.rb in pair_see-0.1.5

- old
+ new

@@ -6,64 +6,61 @@ require_relative 'log_lines' require_relative 'card' require_relative 'cards_per_person' require_relative 'active_devs' - attr_reader :log_lines, :devs, :dev_pairs, :card_prefix + attr_reader :log_lines, :devs, :dev_pairs, :card_prefixes @@maximum_commits_to_parse = 9999 def initialize(options) - @log_lines = _lines_from(options[:repo_location], options[:after_date]) - @sub_seer = CardsPerPerson.new(@log_lines, options) + @log_lines = _lines_from(options[:repo_locations], options[:after_date]) + @sub_seer = CardsPerPerson.new(@log_lines, options[:card_prefix], options[:names]) @active_devs = ActiveDevs.new(@log_lines, options).devs @devs = @sub_seer.devs - @card_prefix = options[:card_prefix] + @card_prefixes = options[:card_prefix] @dev_pairs = devs.combination(2) end -# seer.commits_not_by_known_pair -# seer.all_most_recent_commits -# seer.recommended_pairings -# seer.pretty_card_data -# seer.cards_per_person -# seer.all_commits - - def cards_per_person @sub_seer.cards_per_person end - def _lines_from(git_home, date_string) - g = Git.open(git_home) - lines = g.log(@@maximum_commits_to_parse).since(date_string).map do |l| - LogLine.new("#{l.date} #{l.message}") - end - LogLines.new(lines) + def _lines_from(roots, date_string) + lines = [] + roots.each {|root| + g = Git.open(root) + lines << g.log(@@maximum_commits_to_parse).since(date_string).map do |l| + LogLine.new("#{l.date} #{l.message}") + end + } + LogLines.new(lines.flatten) end def pretty_card_data - card_data(card_prefix).map do |card| - "#{card.card_name} - - - commits: #{card.number_of_commits} - - - duration: #{card.duration} days " unless card.nil? + card_data(card_prefixes).map do |card| + card.pretty unless card.nil? end end - def card_data(card_prefix) - card_numbers(card_prefix).map do |card_name| - commits = commits_on_card(card_name) - Card.new(card_name, commits.count, commits.first.date, commits.last.date) - end.sort_by(&:duration).reverse + def card_data(card_prefixes) + card_prefixes.map do |card_prefix| + card_numbers(card_prefix).map do |card_name| + commits = commits_on_card(card_name) + Card.new(card_name, commits.count, commits.first.date, commits.last.date) + end + end.flatten.sort_by(&:duration).reverse end def commits_on_card(card_name) - log_lines.select { |line| line.contains_card_name?(card_name) } + log_lines.select {|line| line.contains_card_name?(card_name)} end def card_numbers(card_prefix) log_lines.select do |line| line.contains_card?(card_prefix) end.map do |line| - line.card_name(card_prefix) + line.card_name([card_prefix]) end.uniq.compact end def get_card_prefix(config_file) config = YAML.load_file(config_file) @@ -109,16 +106,16 @@ end.sort.reverse.map &:to_s end def recommended_pairings should_pair = unpaired_in_range - should_pair.empty? ? least_recent_pair : should_pair + should_pair.empty? ? [least_recent_pair] : should_pair end def least_recent_pair - devs.select do |dev| - log_lines.last.line.match(dev) - end.join(', ') + devs.select do |person| + person.names.any? {|name| log_lines.last.line.match(name)} + end.map(&:display_name).join(', ') end def unpaired_in_range dev_pairs.select do |person1, person2| most_recent_commit_date(person1, person2).nil?