lita 4.2.1 → 4.3.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/lib/lita.rb +1 -0
- data/lib/lita/cli.rb +29 -8
- data/lib/lita/default_configuration.rb +5 -0
- data/lib/lita/handler/chat_router.rb +1 -0
- data/lib/lita/http_callback.rb +7 -2
- data/lib/lita/rspec/handler.rb +8 -2
- data/lib/lita/version.rb +1 -1
- data/spec/lita/handler/chat_router_spec.rb +10 -0
- data/spec/lita/handler/http_router_spec.rb +13 -0
- data/spec/lita/rspec/handler_spec.rb +31 -0
- data/spec/lita_spec.rb +6 -0
- data/templates/locales/en.yml +9 -0
- data/templates/plugin/README.tt +11 -4
- data/templates/plugin/gemspec.tt +2 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82c5e0d68ab472c4415df6cad75ebdf1fe52fd56
|
4
|
+
data.tar.gz: 7d7ff0871dbc15991a0edb9cf1526a4c49d53366
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6326e3526c0a63f9cba4a8b0fadbed2312a3c29321e3833e1b4ddaedd10ee7dbfa5cc060c4c115ca3c8251b150aa0fb5bad8ea9174376429c23281ec710d8632
|
7
|
+
data.tar.gz: 21f439582fe5b648ba954924ee9743b29a7a50f457507a7f5966f586eca96f9845d608f584a57d7c4f3d54d0fbfcdd535c235a89192183a479143595cdd3b8e7
|
data/lib/lita.rb
CHANGED
@@ -75,6 +75,7 @@ module Lita
|
|
75
75
|
ConfigurationBuilder.load_user_config(config_path)
|
76
76
|
ConfigurationBuilder.freeze_config(config)
|
77
77
|
ConfigurationValidator.new(self).call
|
78
|
+
hooks[:config_finalized].each { |hook| hook.call(config_path: config_path) }
|
78
79
|
self.locale = config.robot.locale
|
79
80
|
Robot.new.run
|
80
81
|
end
|
data/lib/lita/cli.rb
CHANGED
@@ -90,8 +90,9 @@ module Lita
|
|
90
90
|
# @param name [String] The name for the new adapter.
|
91
91
|
# @return [void]
|
92
92
|
def adapter(name)
|
93
|
-
|
94
|
-
|
93
|
+
config = generate_config(name, "adapter")
|
94
|
+
generate_templates(config)
|
95
|
+
post_messages(config)
|
95
96
|
end
|
96
97
|
|
97
98
|
desc "handler NAME", "Generates a new Lita handler"
|
@@ -99,8 +100,9 @@ module Lita
|
|
99
100
|
# @param name [String] The name for the new handler.
|
100
101
|
# @return [void]
|
101
102
|
def handler(name)
|
102
|
-
|
103
|
-
|
103
|
+
config = generate_config(name, "handler")
|
104
|
+
generate_templates(config)
|
105
|
+
post_messages(config)
|
104
106
|
end
|
105
107
|
|
106
108
|
desc "extension NAME", "Generates a new Lita extension"
|
@@ -108,8 +110,9 @@ module Lita
|
|
108
110
|
# @param name [String] The name for the new extension.
|
109
111
|
# @return [void]
|
110
112
|
def extension(name)
|
111
|
-
|
112
|
-
|
113
|
+
config = generate_config(name, "extension")
|
114
|
+
generate_templates(config)
|
115
|
+
post_messages(config)
|
113
116
|
end
|
114
117
|
|
115
118
|
desc "version", "Outputs the current version of Lita"
|
@@ -122,6 +125,10 @@ module Lita
|
|
122
125
|
|
123
126
|
private
|
124
127
|
|
128
|
+
def badges_message
|
129
|
+
say I18n.t("lita.cli.badges_reminder"), :yellow
|
130
|
+
end
|
131
|
+
|
125
132
|
def generate_config(name, plugin_type)
|
126
133
|
name, gem_name = normalize_names(name)
|
127
134
|
constant_name = name.split(/_/).map(&:capitalize).join
|
@@ -198,10 +205,24 @@ module Lita
|
|
198
205
|
end
|
199
206
|
|
200
207
|
def optional_content
|
208
|
+
travis = yes?(I18n.t("lita.cli.travis_question"))
|
209
|
+
coveralls = yes?(I18n.t("lita.cli.coveralls_question"))
|
210
|
+
if travis || coveralls
|
211
|
+
say I18n.t("lita.cli.badges_message")
|
212
|
+
badges = yes?(I18n.t("lita.cli.badges_question"))
|
213
|
+
github_user = ask(I18n.t("lita.cli.github_user_question")) if badges
|
214
|
+
end
|
201
215
|
{
|
202
|
-
travis:
|
203
|
-
coveralls:
|
216
|
+
travis: travis,
|
217
|
+
coveralls: coveralls,
|
218
|
+
badges: badges,
|
219
|
+
github_user: github_user
|
204
220
|
}
|
205
221
|
end
|
222
|
+
|
223
|
+
def post_messages(config)
|
224
|
+
license_message
|
225
|
+
badges_message if config[:badges]
|
226
|
+
end
|
206
227
|
end
|
207
228
|
end
|
data/lib/lita/http_callback.rb
CHANGED
@@ -18,9 +18,14 @@ module Lita
|
|
18
18
|
if request.head?
|
19
19
|
response.status = 204
|
20
20
|
else
|
21
|
-
|
21
|
+
begin
|
22
|
+
handler = @handler_class.new(env["lita.robot"])
|
22
23
|
|
23
|
-
|
24
|
+
@callback.call(handler, request, response)
|
25
|
+
rescue Exception => e
|
26
|
+
env["lita.robot"].config.robot.error_handler.call(e)
|
27
|
+
raise
|
28
|
+
end
|
24
29
|
end
|
25
30
|
|
26
31
|
response.finish
|
data/lib/lita/rspec/handler.rb
CHANGED
@@ -28,10 +28,16 @@ module Lita
|
|
28
28
|
def prepare_handlers(base)
|
29
29
|
base.class_eval do
|
30
30
|
before do
|
31
|
+
handlers = Set.new(
|
32
|
+
[described_class] + Array(base.metadata[:additional_lita_handlers])
|
33
|
+
)
|
34
|
+
|
31
35
|
if Lita.version_3_compatibility_mode?
|
32
|
-
allow(Lita).to receive(:handlers).and_return(
|
36
|
+
allow(Lita).to receive(:handlers).and_return(handlers)
|
33
37
|
else
|
34
|
-
|
38
|
+
handlers.each do |handler|
|
39
|
+
registry.register_handler(handler)
|
40
|
+
end
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
data/lib/lita/version.rb
CHANGED
@@ -157,6 +157,8 @@ handler = Class.new do
|
|
157
157
|
"Test"
|
158
158
|
end
|
159
159
|
|
160
|
+
route(/boom/) { |_response| 1 + "2" }
|
161
|
+
|
160
162
|
route(/one/) { |response| response.reply "got one" }
|
161
163
|
route(/two/) { |response| response.reply "got two" }
|
162
164
|
|
@@ -189,4 +191,12 @@ describe handler, lita_handler: true do
|
|
189
191
|
expect(replies.last).to eq("got three")
|
190
192
|
end
|
191
193
|
end
|
194
|
+
|
195
|
+
context "when the handler raises an exception" do
|
196
|
+
it "calls the error handler with the exception as argument" do
|
197
|
+
expect(registry.config.robot.error_handler).to receive(:call).with(instance_of(TypeError))
|
198
|
+
|
199
|
+
expect { send_message("boom!") }.to raise_error(TypeError)
|
200
|
+
end
|
201
|
+
end
|
192
202
|
end
|
@@ -13,6 +13,7 @@ handler = Class.new do
|
|
13
13
|
http.get ":var/otherwise/identical/path", :no_constraint
|
14
14
|
http.get("block") { |_request, response| response.write("block") }
|
15
15
|
http.get "middleware", :middleware
|
16
|
+
http.get "boom", :boom
|
16
17
|
|
17
18
|
def web(_request, response)
|
18
19
|
response.write("it worked")
|
@@ -40,6 +41,10 @@ handler = Class.new do
|
|
40
41
|
response["Custom-Header"] = request.env["header_value"] if request.env["use_header"]
|
41
42
|
response.write("middleware worked") if request.env["custom_rack_middleware_working"]
|
42
43
|
end
|
44
|
+
|
45
|
+
def boom(_request, _response)
|
46
|
+
1 + "2"
|
47
|
+
end
|
43
48
|
end
|
44
49
|
|
45
50
|
describe handler, lita_handler: true do
|
@@ -82,6 +87,14 @@ describe handler, lita_handler: true do
|
|
82
87
|
expect(response.status).to eq(200)
|
83
88
|
expect(response.body).to eq("block")
|
84
89
|
end
|
90
|
+
|
91
|
+
context "when the handler raises an exception" do
|
92
|
+
it "calls the error handler with the exception as argument" do
|
93
|
+
expect(registry.config.robot.error_handler).to receive(:call).with(instance_of(TypeError))
|
94
|
+
|
95
|
+
expect { http.get("/boom") }.to raise_error(TypeError, "String can't be coerced into Fixnum")
|
96
|
+
end
|
97
|
+
end
|
85
98
|
end
|
86
99
|
|
87
100
|
describe handler, lita_handler: true do
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
handler_class = Class.new(Lita::Handler) do
|
4
|
+
namespace "testclass"
|
5
|
+
|
6
|
+
def self.name
|
7
|
+
"Lita::Handlers::Test"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
additional_handler_class = Class.new(Lita::Handler) do
|
12
|
+
namespace "testclass"
|
13
|
+
|
14
|
+
config :test_property, type: String, default: "a string"
|
15
|
+
|
16
|
+
def self.name
|
17
|
+
"Lita::Handlers::TestBase"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe handler_class, lita_handler: true, additional_lita_handlers: additional_handler_class do
|
22
|
+
context 'when the "additional_lita_handlers" metadata is provided' do
|
23
|
+
it "loads additional handlers into the registry" do
|
24
|
+
expect(registry.handlers).to include(additional_handler_class)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "populates config from additional handlers" do
|
28
|
+
expect(registry.config.handlers.testclass.test_property).to eq("a string")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/lita_spec.rb
CHANGED
@@ -176,6 +176,12 @@ describe Lita do
|
|
176
176
|
described_class.run("path/to/config")
|
177
177
|
end
|
178
178
|
|
179
|
+
it "calls config_finalized hooks" do
|
180
|
+
described_class.register_hook(:config_finalized, hook)
|
181
|
+
expect(hook).to receive(:call).with(config_path: "path/to/config")
|
182
|
+
described_class.run("path/to/config")
|
183
|
+
end
|
184
|
+
|
179
185
|
it "raises if the configuration is not valid" do
|
180
186
|
allow(validator).to receive(:call).and_raise(SystemExit)
|
181
187
|
|
data/templates/locales/en.yml
CHANGED
@@ -76,6 +76,15 @@ en:
|
|
76
76
|
to the root of the repository.
|
77
77
|
|
78
78
|
Common open source software licenses can be found at http://choosealicense.com/.
|
79
|
+
badges_message: >-
|
80
|
+
If your plugin's Git repository will be hosted on GitHub, build status and code coverage
|
81
|
+
badges can be automatically added to your README.
|
82
|
+
badges_question: >-
|
83
|
+
Would you like to add these badges? ("yes" or "no", default is "no")
|
84
|
+
github_user_question: What is your GitHub username?
|
85
|
+
badges_reminder: >-
|
86
|
+
Remember, for badges to be displayed in your plugin's README, you must host your project on
|
87
|
+
GitHub. Additionally, you will need to configure the project on Travis CI and Coveralls.io.
|
79
88
|
config:
|
80
89
|
adapter_deprecated:
|
81
90
|
config.adapter is deprecated and will be removed in Lita 5.0. Use config.adapters instead.
|
data/templates/plugin/README.tt
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# <%= config[:gem_name] %>
|
2
2
|
|
3
|
+
<%- if config[:badges] -%>
|
4
|
+
<%- if config[:travis] -%>
|
5
|
+
[](https://travis-ci.org/<%= config[:github_user] %>/<%= config[:gem_name] %>)
|
6
|
+
<%- end -%>
|
7
|
+
<%- if config[:coveralls] -%>
|
8
|
+
[](https://coveralls.io/r/<%= config[:github_user] %>/<%= config[:gem_name] %>)
|
9
|
+
<%- end -%>
|
10
|
+
<%- if config[:travis] || config[:coveralls] -%>
|
11
|
+
|
12
|
+
<%- end -%>
|
13
|
+
<%- end -%>
|
3
14
|
TODO: Add a description of the plugin.
|
4
15
|
|
5
16
|
## Installation
|
@@ -27,7 +38,3 @@ TODO: Describe any configuration attributes the plugin exposes.
|
|
27
38
|
## Usage
|
28
39
|
|
29
40
|
TODO: Describe the plugin's features and how to use them.
|
30
|
-
|
31
|
-
## License
|
32
|
-
|
33
|
-
[MIT](http://opensource.org/licenses/MIT)
|
data/templates/plugin/gemspec.tt
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.description = "TODO: Add a description"
|
7
7
|
spec.summary = "TODO: Add a summary"
|
8
8
|
spec.homepage = "TODO: Add a homepage"
|
9
|
-
spec.license = "
|
9
|
+
spec.license = "TODO: Add a license"
|
10
10
|
spec.metadata = { "lita_plugin_type" => "<%= config[:plugin_type] %>" }
|
11
11
|
|
12
12
|
spec.files = `git ls-files`.split($/)
|
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.add_runtime_dependency "lita", ">= <%= config[:required_lita_version] %>"
|
18
18
|
|
19
19
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
20
21
|
spec.add_development_dependency "rake"
|
21
22
|
spec.add_development_dependency "rack-test"
|
22
23
|
spec.add_development_dependency "rspec", ">= 3.0.0"
|
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.
|
4
|
+
version: 4.3.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: 2015-
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -354,6 +354,7 @@ files:
|
|
354
354
|
- spec/lita/plugin_builder_spec.rb
|
355
355
|
- spec/lita/response_spec.rb
|
356
356
|
- spec/lita/robot_spec.rb
|
357
|
+
- spec/lita/rspec/handler_spec.rb
|
357
358
|
- spec/lita/rspec_spec.rb
|
358
359
|
- spec/lita/source_spec.rb
|
359
360
|
- spec/lita/template_resolver_spec.rb
|
@@ -430,6 +431,7 @@ test_files:
|
|
430
431
|
- spec/lita/plugin_builder_spec.rb
|
431
432
|
- spec/lita/response_spec.rb
|
432
433
|
- spec/lita/robot_spec.rb
|
434
|
+
- spec/lita/rspec/handler_spec.rb
|
433
435
|
- spec/lita/rspec_spec.rb
|
434
436
|
- spec/lita/source_spec.rb
|
435
437
|
- spec/lita/template_resolver_spec.rb
|