Sha256: 5b678fc2a24994f2908831d4c3165f0dd34c181413be4e705c7d29b5a079fd6c
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
require 'reviewlette/trello_connection' require 'reviewlette/github_connection' require 'reviewlette/vacations' require 'yaml' VERSION = '0.0.7' MEMBERS_CONFIG = YAML.load_file("#{File.dirname(__FILE__)}/../config/members.yml") class Reviewlette def initialize @github = GithubConnection.new @trello = TrelloConnection.new end def run @github.unassigned_pull_requests.each do |issue| issue_id = issue[:number] issue_title = issue[:title] puts "*** Checking unassigned github pull request: #{issue_title}" card_id = issue_title.split(/[_ -#\.]/).last.to_i if card = @trello.find_card_by_id(card_id) puts "Found matching trello card: #{card.name}" reviewer = select_reviewer(issue, card) if reviewer @github.add_assignee(issue_id, reviewer['github_username']) @github.reviewer_comment(issue_id, reviewer['github_username'], card) comment = "@#{reviewer['trello_username']} will review https://github.com/#{@github.repo}/issues/#{issue_id}" @trello.comment_on_card(comment, card) @trello.move_card_to_list(card, 'In review') else puts "Could not find a reviewer for card: #{card.name}" end else puts "No matching card found (id #{card_id})" end end end def select_reviewer(issue, card) reviewers = MEMBERS_CONFIG['members'] # remove people on vacation members_on_vacation = Vacations.members_on_vacation reviewers = reviewers.reject{|r| members_on_vacation.include? r['suse_username'] } # remove trello card owner reviewers = reviewers.reject{|r| card.members.map(&:username).include? r['trello_username'] } reviewer = reviewers.sample puts "Selected reviewer: #{reviewer['name']} from pool #{reviewers.map{|r| r['name']}}" if reviewer reviewer end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
reviewlette-0.0.7 | lib/reviewlette.rb |