bender-bot 0.4.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/bender/bot.rb +38 -14
- data/lib/bender/main.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c92f8f176538d8e81ca22f3c7b032981c91ea7ce
|
4
|
+
data.tar.gz: 85a6f7a33ce6945786dea6918378db2527619299
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05d9d101c52c63e2dda43964cdcbc470c73b323eb99f5d7b8d93c92dd67fe35a98f4a6260a2d2d1ef29b2601007a84c5050247f4af30ab6148c3444586336003
|
7
|
+
data.tar.gz: 9a6bc3702182bcd3e3a31a028fbc284b91dd3cbbce7bc7c54f15c7961a865b89db7ddc79fb3032a8b14c64fa10502e6438f91dc90a5c04400d67520cc7d0d0c3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/bender/bot.rb
CHANGED
@@ -15,11 +15,12 @@ Bot = Robut # alias
|
|
15
15
|
|
16
16
|
|
17
17
|
module Bot
|
18
|
-
def self.run! options
|
18
|
+
def self.run! options, logger
|
19
19
|
hipchat = HipChat::Client.new(options.hipchat_token)
|
20
20
|
BenderBot.class_variable_set :@@hipchat, hipchat
|
21
21
|
BenderBot.class_variable_set :@@rooms, hipchat.rooms
|
22
22
|
BenderBot.class_variable_set :@@options, options
|
23
|
+
BenderBot.class_variable_set :@@logger, logger
|
23
24
|
Bot::Plugin.plugins = [ BenderBot ]
|
24
25
|
conn = Bot::Connection.new
|
25
26
|
conn.store['users'] ||= {}
|
@@ -109,13 +110,21 @@ class BenderBot
|
|
109
110
|
|
110
111
|
when /^\s*\/whoami\s*$/
|
111
112
|
u = user_where name: sender
|
112
|
-
|
113
|
-
|
113
|
+
if u
|
114
|
+
m = '<b>%{nick}</b>: %{name} (<a href="mailto:%{email}">%{email}</a>)' % u
|
115
|
+
reply_html m, :purple
|
116
|
+
else
|
117
|
+
reply_html "Couldn't find the associated user in JIRA", :red
|
118
|
+
end
|
114
119
|
|
115
120
|
when /^\s*\/lookup\s+(.+)\s*$/
|
116
121
|
u = user_where(name: $1) || user_where(nick: $1)
|
117
|
-
|
118
|
-
|
122
|
+
if u
|
123
|
+
m = '<b>%{nick}</b>: %{name} (<a href="mailto:%{email}">%{email}</a>)' % u
|
124
|
+
reply_html m, :purple
|
125
|
+
else
|
126
|
+
reply_html "Couldn't find the associated user in JIRA", :red
|
127
|
+
end
|
119
128
|
|
120
129
|
# /inc help - This help text
|
121
130
|
when /^\s*(\?inc|\/inc\s+help)\s*$/
|
@@ -272,7 +281,9 @@ class BenderBot
|
|
272
281
|
comment = $2
|
273
282
|
user = user_where name: sender
|
274
283
|
|
275
|
-
if
|
284
|
+
if !user
|
285
|
+
reply_html "Couldn't find the associated user in JIRA", :red
|
286
|
+
elsif incident
|
276
287
|
reply_html *comment_on_incident(incident, comment, user)
|
277
288
|
else
|
278
289
|
reply_html 'Sorry, no such incident!', :red
|
@@ -292,25 +303,38 @@ class BenderBot
|
|
292
303
|
|
293
304
|
private
|
294
305
|
|
306
|
+
def log ; @@logger end
|
307
|
+
|
295
308
|
def options ; @@options end
|
296
309
|
|
297
|
-
def user_where fields, threshold=0.
|
310
|
+
def user_where fields, threshold=0.85
|
298
311
|
field, value = fields.to_a.shift
|
299
312
|
suggested_user = store['users'].values.sort_by do |u|
|
300
313
|
compare value, u[field]
|
301
314
|
end.last
|
302
315
|
|
303
316
|
distance = compare value, suggested_user[field]
|
304
|
-
|
317
|
+
|
318
|
+
user = distance < threshold ? nil : suggested_user
|
319
|
+
|
320
|
+
log.trace \
|
321
|
+
action: 'user_where',
|
322
|
+
fields: fields,
|
323
|
+
threshold: threshold,
|
324
|
+
field: field,
|
325
|
+
value: value,
|
326
|
+
suggested_user: suggested_user,
|
327
|
+
distance: distance,
|
328
|
+
user: user
|
329
|
+
|
330
|
+
return user
|
305
331
|
end
|
306
332
|
|
307
333
|
|
308
334
|
def compare name1, name2
|
309
|
-
n1 = name1.gsub
|
310
|
-
n2 = name2.gsub
|
311
|
-
|
312
|
-
d2 = JARO.getDistance n1, n2
|
313
|
-
return d1 + d2 / 2.0
|
335
|
+
n1 = name1.gsub(/\W/, '').downcase
|
336
|
+
n2 = name2.gsub(/\W/, '').downcase
|
337
|
+
JARO.getDistance n1, n2
|
314
338
|
end
|
315
339
|
|
316
340
|
|
@@ -446,7 +470,7 @@ private
|
|
446
470
|
|
447
471
|
def allowed?
|
448
472
|
user = user_where name: @sender
|
449
|
-
store['group'].include?
|
473
|
+
user && store['group'].include?(user[:name])
|
450
474
|
end
|
451
475
|
|
452
476
|
end
|
data/lib/bender/main.rb
CHANGED
@@ -168,7 +168,7 @@ module Bender
|
|
168
168
|
config.logger = log
|
169
169
|
end
|
170
170
|
|
171
|
-
Bot.run! options
|
171
|
+
Bot.run! options, log
|
172
172
|
end
|
173
173
|
|
174
174
|
|
@@ -189,7 +189,7 @@ module Bender
|
|
189
189
|
|
190
190
|
@open = nil unless defined? @open
|
191
191
|
|
192
|
-
log.
|
192
|
+
log.trace \
|
193
193
|
primary_room_name: bot.store['primary_room_name'],
|
194
194
|
primary_room_topic: bot.store['primary_room_topic'],
|
195
195
|
new_room_name: new_room['name'],
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bender-bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Clemmer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.6.
|
61
|
+
version: 0.6.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.6.
|
68
|
+
version: 0.6.2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: hipchat
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|