class Prpr::Action::Lgtm::Comment

Public Instance Methods

call() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 5
def call
  if count == 1
    add_label label(:one)
  elsif count >= 2
    unless already_labeled?(label(:over_2))
      remove_label label(:one)
      add_label label(:over_2)
      add_comment
    end
  end
end

Private Instance Methods

add_comment() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 51
def add_comment
  github.add_comment(repository, pull_request_number, message)
end
add_label(label) click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 59
def add_label(label)
  return if already_labeled?(label)
  github.add_labels_to_an_issue(repository, pull_request_number, [label])
end
already_labeled?(label) click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 69
def already_labeled?(label)
  labels.map(&:name).any? { |name| name == label }
end
count() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 19
def count
  last_state.map(&method(:point)).reduce(:+)
end
github() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 93
def github
  Repository::Github.default
end
label(name) click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 77
def label(name)
  Config::Env.default[:"lgtm_label_#{name}"] || name.to_s
end
labels() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 73
def labels
  github.labels_for_issue(repository, pull_request_number)
end
last_state() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 23
def last_state
  last_state = {}
  reviews.each do|review|
    if review[:state] != 'COMMENTED'
      last_state[review[:user][:login]] = review[:state]
    end
  end
  last_state.values
end
message() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 55
def message
  env.format(:lgtm_body, event.pull_request.assignee)
end
name() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 81
def name
  env[:mention_comment_members] || 'MEMBERS.md'
end
point(state) click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 33
def point(state)
  case state
  when 'APPROVED'
    1
  when 'CHANGES_REQUESTED'
    -1
  else
    0
  end
end
pull_request_number() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 89
def pull_request_number
  event.pull_request.number
end
remove_label(label) click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 64
def remove_label(label)
  return unless already_labeled?(label)
  github.remove_label(repository, pull_request_number, label)
end
repository() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 85
def repository
  event.repository.full_name
end
reviews() click to toggle source
# File lib/prpr/action/lgtm/comment.rb, line 44
def reviews
  # FIXME: use offical method
  @reviews ||=
    github.get "#{Octokit::Repository.path repository}/pulls/#{pull_request_number}/reviews",
      accept: 'application/vnd.github.black-cat-preview+json'
end