class Poper::Runner

Public Class Methods

new(commit, repo_path = '.') click to toggle source
# File lib/poper/runner.rb, line 5
def initialize(commit, repo_path = '.')
  @repo = Rugged::Repository.new(repo_path)
  oid = @repo.rev_parse_oid(commit)
  @commit = @repo.lookup(oid)
end

Public Instance Methods

run() click to toggle source
# File lib/poper/runner.rb, line 11
def run
  commits.flat_map { |c| check(c) }.compact
end

Private Instance Methods

check(commit) click to toggle source
# File lib/poper/runner.rb, line 17
def check(commit)
  rules.map do |rule|
    result = rule.check(commit.message)
    OpenStruct.new(commit: commit.oid, message: result) if result
  end
end
commits() click to toggle source
# File lib/poper/runner.rb, line 32
def commits
  @commits ||= begin
    walker.reset
    walker.push(@repo.last_commit)
    walker.take_while { |c| c.oid != @commit.oid } << @commit
  end
end
rules() click to toggle source
# File lib/poper/runner.rb, line 24
def rules
  Rule::Rule.all.map do |rule_klass|
    rule = rule_klass.new

    rule if rule.enabled?
  end.compact
end
walker() click to toggle source
# File lib/poper/runner.rb, line 40
def walker
  @walker ||= Rugged::Walker.new(@repo)
end