Sha256: debafea5281134df0811708e6907d108ea4dba504f9daf0d72171229389dfe55

Contents?: true

Size: 989 Bytes

Versions: 6

Compression:

Stored size: 989 Bytes

Contents

require 'date'

module PairingMatrix
  class CommitReader
    def initialize(config)
      @config = config
    end

    def read(since)
      commits = []
      @config.repos.each do |repo|
        Dir.chdir repo do
          commits << read_commits(since)
        end
      end
      commits.flatten
    end

    def authors(since)
      commits = read(since)
      commits.map do |commit|
        commit.scan(/#{@config.authors_regex}/).flatten.compact.reject(&:empty?).map { |name| name.gsub(' ', '') }.sort.join(',')
      end.compact.reject(&:empty?)
    end

    def authors_with_commits(days)
      date = (Date.today - days).to_s
      authors = authors(date)
      author_groups = authors.group_by { |n| n }
      author_groups.map do |k, v|
        pair = k.split(',')
        pair.unshift('') if pair.size == 1
        [pair, v.size].flatten
      end
    end

    private
    def read_commits(since)
      `git log --oneline --after=\"#{since}\"`.split("\n")
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pairing_matrix-2.3 lib/pairing_matrix/commit_reader.rb
pairing_matrix-2.2 lib/pairing_matrix/commit_reader.rb
pairing_matrix-2.1.1 lib/pairing_matrix/commit_reader.rb
pairing_matrix-2.1 lib/pairing_matrix/commit_reader.rb
pairing_matrix-2.0 lib/pairing_matrix/commit_reader.rb
pairing_matrix-1.2 lib/pairing_matrix/commit_reader.rb