Class: Lita::Handlers::Reviewme
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::Reviewme
- Defined in:
- lib/lita/handlers/reviewme.rb
Constant Summary collapse
- InvalidConfig =
Class.new(StandardError)
- REDIS_LIST =
"reviewers"- DEFAULT_GITHUB_MSG =
":eyes: %{reviewer}"
Instance Method Summary collapse
- #add_reviewer(response, room: get_room(response)) ⇒ Object
- #display_reviewers(response, room: get_room(response)) ⇒ Object
- #generate_assignment(response, room: get_room(response)) ⇒ Object
- #mention_reviewer(response, room: get_room(response)) ⇒ Object
- #remove_reviewer(response, room: get_room(response)) ⇒ Object
- #review_on_github(response, room: get_room(response)) ⇒ Object
Instance Method Details
#add_reviewer(response, room: get_room(response)) ⇒ Object
71 72 73 74 75 |
# File 'lib/lita/handlers/reviewme.rb', line 71 def add_reviewer(response, room: get_room(response)) reviewer = response.matches.flatten.first ns_redis(room.id).lpush(REDIS_LIST, reviewer) response.reply("added #{reviewer} to reviews") end |
#display_reviewers(response, room: get_room(response)) ⇒ Object
83 84 85 86 87 |
# File 'lib/lita/handlers/reviewme.rb', line 83 def display_reviewers(response, room: get_room(response)) reviewers = ns_redis(room.id).lrange(REDIS_LIST, 0, -1) response.reply("Responding via private message...") response.reply_privately("#{room.name}: #{reviewers.join(', ')}") end |
#generate_assignment(response, room: get_room(response)) ⇒ Object
89 90 91 92 |
# File 'lib/lita/handlers/reviewme.rb', line 89 def generate_assignment(response, room: get_room(response)) reviewer = next_reviewer(room) response.reply(reviewer.to_s) end |
#mention_reviewer(response, room: get_room(response)) ⇒ Object
113 114 115 116 117 |
# File 'lib/lita/handlers/reviewme.rb', line 113 def mention_reviewer(response, room: get_room(response)) url = response.matches.flatten.first reviewer = next_reviewer(room) response.reply(chat_mention(reviewer, url)) end |
#remove_reviewer(response, room: get_room(response)) ⇒ Object
77 78 79 80 81 |
# File 'lib/lita/handlers/reviewme.rb', line 77 def remove_reviewer(response, room: get_room(response)) reviewer = response.matches.flatten.first ns_redis(room.id).lrem(REDIS_LIST, 0, reviewer) response.reply("removed #{reviewer} from reviews") end |
#review_on_github(response, room: get_room(response)) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/lita/handlers/reviewme.rb', line 94 def review_on_github(response, room: get_room(response)) validate_config github = Lita::Reviewme::Github.new(config, response.match_data[:repo], response.match_data[:id]) if reviewer = next_reviewer(room, github.owner) github.assign(reviewer) response.reply("#{reviewer} should be on it...") else response.reply('Sorry, no reviewers found') end rescue Lita::Reviewme::Github::UnknownOwner response.reply("Unable to check who issued the pull request. Sorry if you end up being assigned your own PR!") rescue Lita::Reviewme::Github::CannotPostComment url = response.match_data[:url] response.reply("I couldn't post a comment or request a reviewer. (Are the permissions right?) #{chat_mention(reviewer, url)}") rescue InvalidConfig => error response.reply(error.) end |