lita 4.0.4 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -0
- data/Rakefile +1 -1
- data/lib/lita.rb +1 -0
- data/lib/lita/adapters/shell.rb +1 -1
- data/lib/lita/cli.rb +1 -1
- data/lib/lita/configurable.rb +3 -3
- data/lib/lita/configuration_builder.rb +5 -5
- data/lib/lita/default_configuration.rb +1 -1
- data/lib/lita/handler/chat_router.rb +2 -2
- data/lib/lita/handler/common.rb +3 -3
- data/lib/lita/handler/event_router.rb +2 -2
- data/lib/lita/handlers/authorization.rb +2 -2
- data/lib/lita/handlers/deprecation_check.rb +4 -5
- data/lib/lita/handlers/users.rb +35 -0
- data/lib/lita/middleware_registry.rb +2 -2
- data/lib/lita/registry.rb +5 -5
- data/lib/lita/robot.rb +6 -6
- data/lib/lita/version.rb +1 -1
- data/lita.gemspec +3 -3
- data/spec/lita/handlers/users_spec.rb +33 -0
- data/templates/locales/en.yml +5 -0
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f7cb3c5b605c35c60bdff103c47df2488814712
|
4
|
+
data.tar.gz: 22be31cadc4608c676923ea7253a9a3b6456e5ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f11b1e00ff16c75e0a5c56a7c96b6d658d27ef207444deb2808265471409f5fc5d6c2d3c585b3c56434e8097515ce5eee85f7d02de983979e005a47435e415b
|
7
|
+
data.tar.gz: 2bb7b4fd5497735d4e4a78559b26878f4de79e016901bf1c123c56b78fa37bc6d3c1e7b430875fd7fd820f55026b5f66e3d54ac1ee7be13a96c74a7941304eb3
|
data/.rubocop.yml
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
AbcSize:
|
2
|
+
Enabled: false
|
1
3
|
AlignParameters:
|
2
4
|
Enabled: false
|
3
5
|
AndOr:
|
@@ -10,8 +12,12 @@ Documentation:
|
|
10
12
|
Enabled: false
|
11
13
|
DoubleNegation:
|
12
14
|
Enabled: false
|
15
|
+
EachWithObject:
|
16
|
+
Enabled: false
|
13
17
|
EndAlignment:
|
14
18
|
AlignWith: variable
|
19
|
+
GuardClause:
|
20
|
+
Enabled: false
|
15
21
|
IndentHash:
|
16
22
|
Enabled: false
|
17
23
|
LineLength:
|
@@ -20,6 +26,8 @@ MethodLength:
|
|
20
26
|
Enabled: false
|
21
27
|
NonNilCheck:
|
22
28
|
Enabled: false
|
29
|
+
ParameterLists:
|
30
|
+
Max: 6
|
23
31
|
RegexpLiteral:
|
24
32
|
Enabled: false
|
25
33
|
RescueException:
|
data/Rakefile
CHANGED
data/lib/lita.rb
CHANGED
@@ -117,4 +117,5 @@ require_relative "lita/handlers/authorization"
|
|
117
117
|
require_relative "lita/handlers/help"
|
118
118
|
require_relative "lita/handlers/info"
|
119
119
|
require_relative "lita/handlers/room"
|
120
|
+
require_relative "lita/handlers/users"
|
120
121
|
require_relative "lita/handlers/deprecation_check"
|
data/lib/lita/adapters/shell.rb
CHANGED
@@ -24,7 +24,7 @@ module Lita
|
|
24
24
|
# @return [void]
|
25
25
|
def send_messages(_target, strings)
|
26
26
|
strings = Array(strings)
|
27
|
-
strings.reject!
|
27
|
+
strings.reject!(&:empty?)
|
28
28
|
unless RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ || !$stdout.tty?
|
29
29
|
strings.map! { |string| "\e[32m#{string}\e[0m" }
|
30
30
|
end
|
data/lib/lita/cli.rb
CHANGED
@@ -121,7 +121,7 @@ module Lita
|
|
121
121
|
|
122
122
|
def generate_config(name, plugin_type)
|
123
123
|
name, gem_name = normalize_names(name)
|
124
|
-
constant_name = name.split(/_/).map
|
124
|
+
constant_name = name.split(/_/).map(&:capitalize).join
|
125
125
|
namespace = "#{plugin_type}s"
|
126
126
|
constant_namespace = namespace.capitalize
|
127
127
|
spec_type = plugin_type == "handler" ? "lita_handler" : "lita"
|
data/lib/lita/configurable.rb
CHANGED
@@ -12,9 +12,9 @@ module Lita
|
|
12
12
|
# @return [void]
|
13
13
|
# @since 4.0.0
|
14
14
|
# @see Lita::ConfigurationBuilder#config
|
15
|
-
def config(*args, **kwargs)
|
16
|
-
if
|
17
|
-
configuration_builder.config(*args, **kwargs, &
|
15
|
+
def config(*args, **kwargs, &block)
|
16
|
+
if block
|
17
|
+
configuration_builder.config(*args, **kwargs, &block)
|
18
18
|
else
|
19
19
|
configuration_builder.config(*args, **kwargs)
|
20
20
|
end
|
@@ -106,13 +106,13 @@ module Lita
|
|
106
106
|
# @yield A block to be evaluated in the context of the new attribute. Used for
|
107
107
|
# defining nested configuration attributes and validators.
|
108
108
|
# @return [void]
|
109
|
-
def config(name, types: nil, type: nil, required: false, default: nil)
|
109
|
+
def config(name, types: nil, type: nil, required: false, default: nil, &block)
|
110
110
|
attribute = self.class.new
|
111
111
|
attribute.name = name
|
112
112
|
attribute.types = types || type
|
113
113
|
attribute.required = required
|
114
114
|
attribute.value = default
|
115
|
-
attribute.instance_exec(&
|
115
|
+
attribute.instance_exec(&block) if block
|
116
116
|
|
117
117
|
children << attribute
|
118
118
|
end
|
@@ -129,15 +129,15 @@ module Lita
|
|
129
129
|
# validation passed.
|
130
130
|
# @yield The code that performs validation.
|
131
131
|
# @return [void]
|
132
|
-
def validate
|
133
|
-
validator =
|
132
|
+
def validate(&block)
|
133
|
+
validator = block
|
134
134
|
|
135
135
|
unless value.nil?
|
136
136
|
error = validator.call(value)
|
137
137
|
raise ValidationError, error if error
|
138
138
|
end
|
139
139
|
|
140
|
-
@validator =
|
140
|
+
@validator = block
|
141
141
|
end
|
142
142
|
|
143
143
|
# Sets the value of the attribute, raising an error if it is not among the valid types.
|
@@ -134,7 +134,7 @@ module Lita
|
|
134
134
|
config :log_level, types: [String, Symbol], default: :info do
|
135
135
|
validate do |value|
|
136
136
|
unless LOG_LEVELS.include?(value.to_s.downcase.strip)
|
137
|
-
"must be one of: #{LOG_LEVELS.join(
|
137
|
+
"must be one of: #{LOG_LEVELS.join(', ')}"
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
@@ -41,12 +41,12 @@ module Lita
|
|
41
41
|
# @yield The body of the route's callback.
|
42
42
|
# @return [void]
|
43
43
|
# @since 4.0.0
|
44
|
-
def route(pattern, method_name = nil, **options)
|
44
|
+
def route(pattern, method_name = nil, **options, &block)
|
45
45
|
options = default_route_options.merge(options)
|
46
46
|
options[:restrict_to] = options[:restrict_to].nil? ? nil : Array(options[:restrict_to])
|
47
47
|
routes << Route.new(
|
48
48
|
pattern,
|
49
|
-
Callback.new(method_name ||
|
49
|
+
Callback.new(method_name || block),
|
50
50
|
options.delete(:command),
|
51
51
|
options.delete(:restrict_to),
|
52
52
|
options.delete(:help),
|
data/lib/lita/handler/common.rb
CHANGED
@@ -73,11 +73,11 @@ module Lita
|
|
73
73
|
# @param options [Hash] A set of options passed on to Faraday.
|
74
74
|
# @yield [builder] A Faraday builder object for adding middleware.
|
75
75
|
# @return [Faraday::Connection] The new connection object.
|
76
|
-
def http(options = {})
|
76
|
+
def http(options = {}, &block)
|
77
77
|
options = default_faraday_options.merge(options)
|
78
78
|
|
79
|
-
if
|
80
|
-
Faraday::Connection.new(nil, options, &
|
79
|
+
if block
|
80
|
+
Faraday::Connection.new(nil, options, &block)
|
81
81
|
else
|
82
82
|
Faraday::Connection.new(nil, options)
|
83
83
|
end
|
@@ -35,9 +35,9 @@ module Lita
|
|
35
35
|
# @yield The body of the event callback.
|
36
36
|
# @return [void]
|
37
37
|
# @since 4.0.0
|
38
|
-
def on(event_name, method_name_or_callable = nil)
|
38
|
+
def on(event_name, method_name_or_callable = nil, &block)
|
39
39
|
event_subscriptions[normalize_event(event_name)] << Callback.new(
|
40
|
-
method_name_or_callable ||
|
40
|
+
method_name_or_callable || block
|
41
41
|
)
|
42
42
|
end
|
43
43
|
|
@@ -66,7 +66,7 @@ module Lita
|
|
66
66
|
groups_with_users.select! { |group, _| group == requested_group }
|
67
67
|
end
|
68
68
|
groups_with_users.map do |group, users|
|
69
|
-
user_names = users.map
|
69
|
+
user_names = users.map(&:name).join(", ")
|
70
70
|
"#{group}: #{user_names}"
|
71
71
|
end
|
72
72
|
end
|
@@ -83,7 +83,7 @@ module Lita
|
|
83
83
|
|
84
84
|
def valid_group?(response, identifier)
|
85
85
|
unless identifier && @group
|
86
|
-
response.reply "#{t(
|
86
|
+
response.reply "#{t('format')}: #{robot.name} auth add USER GROUP"
|
87
87
|
return
|
88
88
|
end
|
89
89
|
|
@@ -10,11 +10,10 @@ module Lita
|
|
10
10
|
# Warns about handlers using the old +default_config+ method.
|
11
11
|
def check_handlers_for_default_config(_payload)
|
12
12
|
robot.registry.handlers.each do |handler|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
13
|
+
next unless handler.respond_to?(:default_config)
|
14
|
+
Lita.logger.warn(
|
15
|
+
I18n.t("lita.config.handler_default_config_deprecated", name: handler.namespace)
|
16
|
+
)
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
# Provides information on Lita users.
|
4
|
+
# @since 4.1.0
|
5
|
+
class Users
|
6
|
+
extend Lita::Handler::ChatRouter
|
7
|
+
|
8
|
+
route(/^users\s+find\s+(.+)/i, :find, command: true, help: {
|
9
|
+
t("help.find_key") => t("help.find_value")
|
10
|
+
})
|
11
|
+
|
12
|
+
# Outputs the name, ID, and mention name of a user matching the search query.
|
13
|
+
# @param response [Lita::Response] The response object.
|
14
|
+
# @return [void]
|
15
|
+
def find(response)
|
16
|
+
user = Lita::User.fuzzy_find(response.args[1])
|
17
|
+
|
18
|
+
if user
|
19
|
+
response.reply(formatted_user(user))
|
20
|
+
else
|
21
|
+
response.reply(t("find_empty_state"))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Extract and label the relevant user information.
|
28
|
+
def formatted_user(user)
|
29
|
+
"#{user.name} (ID: #{user.id}, Mention name: #{user.mention_name})"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
Lita.register_handler(Users)
|
34
|
+
end
|
35
|
+
end
|
@@ -28,8 +28,8 @@ module Lita
|
|
28
28
|
# @param args [Array] Arbitrary initialization arguments for the middleware.
|
29
29
|
# @yield An optional block to be passed to the constructor of the middleware.
|
30
30
|
# @return [void]
|
31
|
-
def use(middleware, *args)
|
32
|
-
@registry << MiddlewareWrapper.new(middleware, args,
|
31
|
+
def use(middleware, *args, &block)
|
32
|
+
@registry << MiddlewareWrapper.new(middleware, args, block)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
data/lib/lita/registry.rb
CHANGED
@@ -47,8 +47,8 @@ module Lita
|
|
47
47
|
# @yield The body of the adapter class.
|
48
48
|
# @return [void]
|
49
49
|
# @since 4.0.0
|
50
|
-
def register_adapter(key, adapter = nil)
|
51
|
-
adapter = PluginBuilder.new(key, &
|
50
|
+
def register_adapter(key, adapter = nil, &block)
|
51
|
+
adapter = PluginBuilder.new(key, &block).build_adapter if block
|
52
52
|
|
53
53
|
unless adapter.is_a?(Class)
|
54
54
|
raise ArgumentError, I18n.t("lita.core.register_adapter.block_or_class_required")
|
@@ -67,9 +67,9 @@ module Lita
|
|
67
67
|
# @yield The body of the handler class.
|
68
68
|
# @return [void]
|
69
69
|
# @since 4.0.0
|
70
|
-
def register_handler(handler_or_key)
|
71
|
-
if
|
72
|
-
handler = PluginBuilder.new(handler_or_key, &
|
70
|
+
def register_handler(handler_or_key, &block)
|
71
|
+
if block
|
72
|
+
handler = PluginBuilder.new(handler_or_key, &block).build_handler
|
73
73
|
else
|
74
74
|
handler = handler_or_key
|
75
75
|
|
data/lib/lita/robot.rb
CHANGED
@@ -181,12 +181,12 @@ module Lita
|
|
181
181
|
begin
|
182
182
|
@server.add_tcp_listener(http_config.host, http_config.port.to_i)
|
183
183
|
rescue Errno::EADDRINUSE, Errno::EACCES => e
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
184
|
+
Lita.logger.fatal I18n.t(
|
185
|
+
"lita.http.exception",
|
186
|
+
message: e.message,
|
187
|
+
backtrace: e.backtrace.join("\n")
|
188
|
+
)
|
189
|
+
abort
|
190
190
|
end
|
191
191
|
@server.min_threads = http_config.min_threads
|
192
192
|
@server.max_threads = http_config.max_threads
|
data/lib/lita/version.rb
CHANGED
data/lita.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Lita::VERSION
|
9
9
|
spec.authors = ["Jimmy Cuadra"]
|
10
10
|
spec.email = ["jimmy@jimmycuadra.com"]
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
11
|
+
spec.description = "ChatOps for Ruby."
|
12
|
+
spec.summary = "ChatOps framework for Ruby. Lita is a robot companion for your chat room."
|
13
13
|
spec.homepage = "https://github.com/jimmycuadra/lita"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -38,5 +38,5 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_development_dependency "simplecov"
|
39
39
|
spec.add_development_dependency "coveralls"
|
40
40
|
spec.add_development_dependency "pry"
|
41
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
41
|
+
spec.add_development_dependency "rubocop", "~> 0.28.0"
|
42
42
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::Users, lita_handler: true do
|
4
|
+
it { is_expected.to route_command("users find carl").to(:find) }
|
5
|
+
|
6
|
+
describe "#find" do
|
7
|
+
it "finds users by ID" do
|
8
|
+
send_command("users find 1")
|
9
|
+
|
10
|
+
expect(replies.first).to eq("Test User (ID: 1, Mention name: Test User)")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "finds users by name" do
|
14
|
+
send_command("users find 'Test User'")
|
15
|
+
|
16
|
+
expect(replies.first).to eq("Test User (ID: 1, Mention name: Test User)")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "finds users by mention name" do
|
20
|
+
Lita::User.create(2, name: "Mr. Pug", mention_name: "carl")
|
21
|
+
|
22
|
+
send_command("users find carl")
|
23
|
+
|
24
|
+
expect(replies.first).to eq("Mr. Pug (ID: 2, Mention name: carl)")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "replies with a message when no matches are found" do
|
28
|
+
send_command("users find nobody")
|
29
|
+
|
30
|
+
expect(replies.first).to eq("No matching users found.")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/templates/locales/en.yml
CHANGED
@@ -46,6 +46,11 @@ en:
|
|
46
46
|
join_value: Makes the robot join the room with room ID ROOM_ID.
|
47
47
|
part_key: part ROOM_ID
|
48
48
|
part_value: Makes the robot part from the room with room ID ROOM_ID.
|
49
|
+
users:
|
50
|
+
find_empty_state: No matching users found.
|
51
|
+
help:
|
52
|
+
find_key: users find SEARCH_TERM
|
53
|
+
find_value: Find a Lita user by ID, name, or mention name.
|
49
54
|
adapter:
|
50
55
|
method_not_implemented: "This adapter has not implemented #%{method}."
|
51
56
|
missing_configs: "The following keys are required on config.adapter: %{configs}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Cuadra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -254,15 +254,15 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: 0.
|
257
|
+
version: 0.28.0
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: 0.
|
265
|
-
description:
|
264
|
+
version: 0.28.0
|
265
|
+
description: ChatOps for Ruby.
|
266
266
|
email:
|
267
267
|
- jimmy@jimmycuadra.com
|
268
268
|
executables:
|
@@ -303,6 +303,7 @@ files:
|
|
303
303
|
- lib/lita/handlers/help.rb
|
304
304
|
- lib/lita/handlers/info.rb
|
305
305
|
- lib/lita/handlers/room.rb
|
306
|
+
- lib/lita/handlers/users.rb
|
306
307
|
- lib/lita/http_callback.rb
|
307
308
|
- lib/lita/http_route.rb
|
308
309
|
- lib/lita/logger.rb
|
@@ -345,6 +346,7 @@ files:
|
|
345
346
|
- spec/lita/handlers/help_spec.rb
|
346
347
|
- spec/lita/handlers/info_spec.rb
|
347
348
|
- spec/lita/handlers/room_spec.rb
|
349
|
+
- spec/lita/handlers/users_spec.rb
|
348
350
|
- spec/lita/logger_spec.rb
|
349
351
|
- spec/lita/message_spec.rb
|
350
352
|
- spec/lita/plugin_builder_spec.rb
|
@@ -392,10 +394,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
392
394
|
version: '0'
|
393
395
|
requirements: []
|
394
396
|
rubyforge_project:
|
395
|
-
rubygems_version: 2.
|
397
|
+
rubygems_version: 2.4.5
|
396
398
|
signing_key:
|
397
399
|
specification_version: 4
|
398
|
-
summary:
|
400
|
+
summary: ChatOps framework for Ruby. Lita is a robot companion for your chat room.
|
399
401
|
test_files:
|
400
402
|
- spec/lita/adapter_spec.rb
|
401
403
|
- spec/lita/adapters/shell_spec.rb
|
@@ -415,6 +417,7 @@ test_files:
|
|
415
417
|
- spec/lita/handlers/help_spec.rb
|
416
418
|
- spec/lita/handlers/info_spec.rb
|
417
419
|
- spec/lita/handlers/room_spec.rb
|
420
|
+
- spec/lita/handlers/users_spec.rb
|
418
421
|
- spec/lita/logger_spec.rb
|
419
422
|
- spec/lita/message_spec.rb
|
420
423
|
- spec/lita/plugin_builder_spec.rb
|