lita-github-pinger 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22a3c55423931d3500825fc7f3e82a427402c4a9402512aa74a84c98ce743554
4
- data.tar.gz: 9f31cd68ecaabd1e1b5a8b41fcfdbc17547d1b169e9890e0e33786162369602a
3
+ metadata.gz: '094839bb6f04f078249882a02919475b3661c4b34811a9cb50e0401384eb3898'
4
+ data.tar.gz: ba0930b35cf5935f6706e297a657c765a60e79220cff83185fe22002995532e4
5
5
  SHA512:
6
- metadata.gz: 8a105fc1e85ba1a43da53af7e1af47313a53a091a8ecff8422af215752d98a6c2d9552ce678c164891a392bea0568354ffd71b5dfef28544e577816f72991063
7
- data.tar.gz: 47636bfc97048f6808c29f9d52016117c848d8235929b191cd0240d7cc93dd4c9c8513da017d758593494414d29271088f4e4e3e9bb50bd1469e2077ae74b1fd
6
+ metadata.gz: c4c5735aa6fa0f3c89b7b565ac5f12d8f73a0f3a57a25ff8a0b6f2ae62fb2460404ad6cf926922af883c1c067c0ade43f10760fdac6f0ede58977a3f537880e2
7
+ data.tar.gz: 368d4dba7ad19a30733749b09e2d72796bea574ebce9c761418cb448f36668ea6c3d16a2e113a9261d7297800a16025e5be63121fe40dda013cd4374aa5d4bcd
@@ -1,6 +1,9 @@
1
+ require 'json'
2
+
1
3
  module Lita
2
4
  module Handlers
3
5
  RR_REDIS_KEY = 'lita-github-pinger:roundrobin'.freeze
6
+ REVIEW_REDIS_KEY = 'lita-github-pinger:reviewrequests'.freeze
4
7
 
5
8
  class GithubPinger < Handler
6
9
 
@@ -165,13 +168,33 @@ module Lita
165
168
  def act_on_review_requested(body, response)
166
169
  puts "Detected a review request."
167
170
 
168
- p body["pull_request"]
171
+ puts "looking at previously notified reviewers for this PR"
172
+
173
+ pr = body["pull_request"]
174
+
175
+ url = pr["html_url"]
176
+
177
+ notified_engineers = redis.get(REVIEW_REDIS_KEY + ":" + url)
178
+
179
+ notified_engineers = if notified_engineers
180
+ JSON.parse(notified_engineers)
181
+ else
182
+ []
183
+ end
184
+
185
+ pr["requested_reviewers"].each do |reviewer|
186
+ engineer = find_engineer(github: reviewer["login"])
169
187
 
170
- reviewer = body["pull_request"]["requested_reviewer"]
188
+ if !engineer
189
+ puts "Could not find engineer #{reviewer["login"]}"
190
+ next
191
+ end
171
192
 
172
- engineer = find_engineer(github: reviewer["login"])
193
+ if notified_engineers.include?(reviewer["login"])
194
+ puts "#{reviewer["login"]} has already been notified to review PR, skipping..."
195
+ next
196
+ end
173
197
 
174
- if engineer
175
198
  puts "#{engineer} determined as a reviewer."
176
199
 
177
200
  puts "Looking up preferences..."
@@ -180,17 +203,14 @@ module Lita
180
203
  if !should_notify
181
204
  puts "will not notify, preference for :github_preferences[:notify_about_review_requests] is not true"
182
205
  else
183
- url = body["pull_request"]["html_url"]
184
-
185
206
  message = "You've been asked to review a pull request:\n#{url}"
186
-
187
- puts "Sending DM to #{engineer}..."
188
207
  send_dm(engineer[:usernames][:slack], message)
208
+ notified_engineers.push(reviewer["login"])
189
209
  end
190
- else
191
- puts "Could not find engineer #{reviewer["login"]}"
192
210
  end
193
211
 
212
+ redis.set(REVIEW_REDIS_KEY + ":" + url, notified_engineers.to_json)
213
+
194
214
  response
195
215
  end
196
216
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-github-pinger"
3
- spec.version = "0.9.6"
3
+ spec.version = "0.9.7"
4
4
  spec.authors = ["Taylor Lapeyre"]
5
5
  spec.email = ["taylorlapeyre@gmail.com"]
6
6
  spec.description = "A Lita handler that detects github comment notifications and regurgitates a ping to the correct slack username."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-github-pinger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Lapeyre