lib/pronto/formatter/github_status_formatter.rb
require_relative 'github_status_formatter/status_builder'
module Pronto
module Formatter
class GithubStatusFormatter < Base
def self.name
'github_status'
end
def format(messages, repo, _)
client = Github.new(repo)
head = repo.head_commit_sha
messages_by_runner = messages.uniq.group_by(&:runner)
Runner.runners.each do |runner|
create_status(client, head, runner, messages_by_runner[runner] || [])
end
end
private
def create_status(client, sha, runner, messages)
builder = StatusBuilder.new(runner, messages)
status = Status.new(sha, builder.state,
builder.context, builder.description)
client.create_commit_status(status)
end
end
end
end
Pronto::Formatter.register(Pronto::Formatter::GithubStatusFormatter)