lita 4.0.4 → 4.1.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/.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
|