bender-bot 0.4.8 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|