module PrNotifier

Constants

VERSION

Public Instance Methods

message(pull_requests:) click to toggle source
# File lib/pr-notifier.rb, line 32
def message(pull_requests:) 
  ERB.new(template, nil, '-').result(binding)
end
run(gh_token: nil, repos: nil, webhook_url: nil, channel: nil, username: nil, template: nil, dry_run: false) click to toggle source
# File lib/pr-notifier.rb, line 8
def run(gh_token: nil, repos: nil, webhook_url: nil, channel: nil, username: nil, template: nil, dry_run: false)
  gh_token ||= ENV['GH_TOKEN']
  repos = (repos || ENV['GH_REPOS'])&.split(',')
  webhook_url ||= ENV["SLACK_WEBHOOK_URL"]
  channel ||= ENV["SLACK_CHANNEL"]
  username ||= ENV["SLACK_USERNAME"]
  @template = template || ENV["TEMPLATE"]

  raise "Please set GitHub Token" if gh_token.nil?
  raise "Please set repos" if repos.size == 0
  raise "Please set slack webhook_url" if webhook_url.nil?

  gh_client = Github.new(access_token: gh_token)
  prs = repos.each_with_object([]) { |repo, prs| prs.concat(gh_client.fetch_prs_by(repo)) }

  send_message = message(pull_requests: prs)
  if dry_run
    puts send_message
  else
    notifier = Slack::Notifier.new(webhook_url, channel: channel, username: username)
    notifier.ping(message(pull_requests: prs))
  end
end
template() click to toggle source
# File lib/pr-notifier.rb, line 36
  def template
    @template || <<~ERB
<% pull_requests.each do |pr| -%>
:memo: <%= pr.title %>
      <%= pr.url %>
<% if pr.reviewers.size > 0 -%>
      reviewers: <%= pr.reviewers.join(", ") %>
<% end -%>
<% end -%>
ERB
  end