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?