lita 2.2.1 → 2.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/.gitignore +2 -0
- data/README.md +5 -0
- data/lib/lita.rb +1 -0
- data/lib/lita/adapters/shell.rb +13 -3
- data/lib/lita/cli.rb +120 -14
- data/lib/lita/handler.rb +3 -3
- data/lib/lita/response.rb +1 -1
- data/lib/lita/version.rb +1 -1
- data/spec/lita/adapters/shell_spec.rb +8 -1
- data/spec/lita/response_spec.rb +14 -0
- data/templates/plugin/Gemfile +3 -0
- data/templates/plugin/LICENSE.tt +19 -0
- data/templates/plugin/README.tt +23 -0
- data/templates/plugin/Rakefile +6 -0
- data/templates/plugin/gemspec.tt +25 -0
- data/templates/plugin/gitignore +17 -0
- data/templates/plugin/lib/lita/plugin_type/plugin.tt +14 -0
- data/templates/plugin/lib/plugin.tt +1 -0
- data/templates/plugin/spec/lita/plugin_type/plugin_spec.tt +4 -0
- data/templates/plugin/spec/spec_helper.tt +12 -0
- data/templates/plugin/travis.yml +6 -0
- data/{skeleton → templates/robot}/Gemfile +0 -0
- data/{skeleton → templates/robot}/lita_config.rb +0 -0
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 413787eadeaaa5e58440f591d404423c90e7b95d
|
4
|
+
data.tar.gz: 4114e0ac515a2068a361e4f6fdfcd0103ed27e8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58c0d8117141c1809f73422a581bc7a11693eca37f02234abddb913fc70ce631a5026320a4fdfc09f1ec772eb0501301c656fcf750d7a35a23e85415b7ce8d8d
|
7
|
+
data.tar.gz: bfb5bc4df0cc27e9d242e30beca7e6ae7683f3655dc29dc7ed575fde39c40e62a0a6b3b84746c826fdf5b48e65e5b1de3ac09fe9bc5ba19eb6e48d4bd23ad108
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -20,6 +20,7 @@ Automate your business and have fun with your very own robot companion.
|
|
20
20
|
* Support for outgoing HTTP requests
|
21
21
|
* Group-based authorization
|
22
22
|
* Configurable logging
|
23
|
+
* Generators for creating new plugins
|
23
24
|
|
24
25
|
## Why?
|
25
26
|
|
@@ -137,6 +138,8 @@ Lita ships with one adapter for use directly in the shell. Simply type text at t
|
|
137
138
|
|
138
139
|
An adapter is a packaged as a RubyGem. The adapter is a class that inherits from `Lita::Adapter`, implements a few required methods, and is registered by calling `Lita.register_adapter(:symbol_that_identifies_the_adapter, TheAdapterClass)`.
|
139
140
|
|
141
|
+
To generate a starting template for a new adapter gem, run `lita adapter NAME`, where NAME is the name of the new gem.
|
142
|
+
|
140
143
|
### Example
|
141
144
|
|
142
145
|
Here is a bare bones example of an adapter for the fictious chat service, FancyChat.
|
@@ -180,6 +183,8 @@ For more detailed examples, check out the built in shell adapter, [lita-hipchat]
|
|
180
183
|
|
181
184
|
A handler is packaged as a RubyGem. A handler is a class that inherits from `Lita::Handler` and is registered by calling `Lita.register_handler(TheHandlerClass)`. There are two components to a handler: route definitions, and the methods that implement those routes. There are both chat routes and HTTP routes available to handlers.
|
182
185
|
|
186
|
+
To generate a starting template for a new handler gem, run `lita handler NAME`, where NAME is the name of the new gem.
|
187
|
+
|
183
188
|
### Chat routes
|
184
189
|
|
185
190
|
To define a route, use the class method `route`:
|
data/lib/lita.rb
CHANGED
data/lib/lita/adapters/shell.rb
CHANGED
@@ -12,9 +12,14 @@ module Lita
|
|
12
12
|
|
13
13
|
loop do
|
14
14
|
print "#{robot.name} > "
|
15
|
-
input = $stdin.gets
|
15
|
+
input = $stdin.gets
|
16
|
+
if input.nil?
|
17
|
+
puts
|
18
|
+
break
|
19
|
+
end
|
20
|
+
input = input.chomp.strip
|
16
21
|
break if input == "exit" || input == "quit"
|
17
|
-
robot.receive(build_message(
|
22
|
+
robot.receive(build_message(input, source))
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
@@ -24,6 +29,11 @@ module Lita
|
|
24
29
|
# @param strings [Array<String>] An array of strings to output.
|
25
30
|
# @return [void]
|
26
31
|
def send_messages(target, strings)
|
32
|
+
strings = Array(strings)
|
33
|
+
strings.reject! { |string| string.empty? }
|
34
|
+
unless RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ || !$stdout.tty?
|
35
|
+
strings.map! { |string| "\e[32m#{string}\e[0m" }
|
36
|
+
end
|
27
37
|
puts strings
|
28
38
|
end
|
29
39
|
|
@@ -35,7 +45,7 @@ module Lita
|
|
35
45
|
|
36
46
|
private
|
37
47
|
|
38
|
-
def build_message(
|
48
|
+
def build_message(input, source)
|
39
49
|
message = Message.new(robot, input, source)
|
40
50
|
message.command! if Lita.config.adapter.private_chat
|
41
51
|
message
|
data/lib/lita/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "thor"
|
2
2
|
|
3
3
|
require "lita/daemon"
|
4
|
+
require "lita/version"
|
4
5
|
|
5
6
|
module Lita
|
6
7
|
# The command line interface for Lita.
|
@@ -8,46 +9,50 @@ module Lita
|
|
8
9
|
include Thor::Actions
|
9
10
|
|
10
11
|
def self.source_root
|
11
|
-
File.expand_path("
|
12
|
+
File.expand_path("../../../templates", __FILE__)
|
12
13
|
end
|
13
14
|
|
14
15
|
default_task :start
|
15
16
|
|
16
|
-
|
17
|
+
desc "start", "Starts Lita"
|
18
|
+
option :config,
|
17
19
|
aliases: "-c",
|
18
20
|
banner: "PATH",
|
19
21
|
default: File.expand_path("lita_config.rb", Dir.pwd),
|
20
22
|
desc: "Path to the configuration file to use"
|
21
|
-
|
22
|
-
class_option :daemonize,
|
23
|
+
option :daemonize,
|
23
24
|
aliases: "-d",
|
24
25
|
default: false,
|
25
26
|
desc: "Run Lita as a daemon",
|
26
27
|
type: :boolean
|
27
|
-
|
28
|
-
class_option :log_file,
|
28
|
+
option :log_file,
|
29
29
|
aliases: "-l",
|
30
30
|
banner: "PATH",
|
31
31
|
default: Process.euid == 0 ?
|
32
32
|
"/var/log/lita.log" : File.expand_path("lita.log", ENV["HOME"]),
|
33
33
|
desc: "Path where the log file should be written when daemonized"
|
34
|
-
|
35
|
-
class_option :pid_file,
|
34
|
+
option :pid_file,
|
36
35
|
aliases: "-p",
|
37
36
|
banner: "PATH",
|
38
37
|
default: Process.euid == 0 ?
|
39
38
|
"/var/run/lita.pid" : File.expand_path("lita.pid", ENV["HOME"]),
|
40
39
|
desc: "Path where the PID file should be written when daemonized"
|
41
|
-
|
42
|
-
class_option :kill,
|
40
|
+
option :kill,
|
43
41
|
aliases: "-k",
|
44
42
|
default: false,
|
45
43
|
desc: "Kill existing Lita processes when starting the daemon",
|
46
44
|
type: :boolean
|
47
|
-
|
48
|
-
desc "start", "Starts Lita"
|
49
45
|
def start
|
50
|
-
|
46
|
+
begin
|
47
|
+
Bundler.require
|
48
|
+
rescue Bundler::GemfileNotFound
|
49
|
+
no_gemfile_warning = <<-WARN.chomp
|
50
|
+
The default command "start" must be run inside a Lita project. Try running \
|
51
|
+
`lita new` to generate a new Lita project or `lita help` to see all commands.
|
52
|
+
WARN
|
53
|
+
say no_gemfile_warning, :red
|
54
|
+
abort
|
55
|
+
end
|
51
56
|
|
52
57
|
if options[:daemonize]
|
53
58
|
Daemon.new(
|
@@ -62,7 +67,108 @@ module Lita
|
|
62
67
|
|
63
68
|
desc "new NAME", "Generates a new Lita project (default name: lita)"
|
64
69
|
def new(name = "lita")
|
65
|
-
directory "
|
70
|
+
directory "robot", name
|
71
|
+
end
|
72
|
+
|
73
|
+
desc "adapter NAME", "Generates a new Lita adapter"
|
74
|
+
def adapter(name)
|
75
|
+
generate_templates(generate_config(name, "adapter"))
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "handler NAME", "Generates a new Lita handler"
|
79
|
+
def handler(name)
|
80
|
+
generate_templates(generate_config(name, "handler"))
|
81
|
+
end
|
82
|
+
|
83
|
+
desc "version", "Outputs the current version of Lita"
|
84
|
+
def version
|
85
|
+
puts VERSION
|
86
|
+
end
|
87
|
+
map %w(-v --version) => :version
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def generate_config(name, plugin_type)
|
92
|
+
name, gem_name = normalize_names(name)
|
93
|
+
constant_name = name.split(/_/).map { |p| p.capitalize }.join
|
94
|
+
namespace = "#{plugin_type}s"
|
95
|
+
constant_namespace = namespace.capitalize
|
96
|
+
spec_type = plugin_type == "handler" ? "lita_handler" : "lita"
|
97
|
+
required_lita_version = Lita::VERSION.split(/\./)[0...-1].join(".")
|
98
|
+
|
99
|
+
{
|
100
|
+
name: name,
|
101
|
+
gem_name: gem_name,
|
102
|
+
constant_name: constant_name,
|
103
|
+
plugin_type: plugin_type,
|
104
|
+
namespace: namespace,
|
105
|
+
constant_namespace: constant_namespace,
|
106
|
+
spec_type: spec_type,
|
107
|
+
required_lita_version: required_lita_version
|
108
|
+
}.merge(generate_user_config).merge(optional_content)
|
109
|
+
end
|
110
|
+
|
111
|
+
def generate_user_config
|
112
|
+
git_user = `git config user.name`.chomp
|
113
|
+
git_user = "TODO: Write your name" if git_user.empty?
|
114
|
+
git_email = `git config user.email`.chomp
|
115
|
+
git_email = "TODO: Write your email address" if git_email.empty?
|
116
|
+
|
117
|
+
{
|
118
|
+
author: git_user,
|
119
|
+
email: git_email
|
120
|
+
}
|
121
|
+
end
|
122
|
+
|
123
|
+
def generate_templates(config)
|
124
|
+
name = config[:name]
|
125
|
+
gem_name = config[:gem_name]
|
126
|
+
namespace = config[:namespace]
|
127
|
+
travis = config[:travis]
|
128
|
+
|
129
|
+
target = File.join(Dir.pwd, gem_name)
|
130
|
+
|
131
|
+
template(
|
132
|
+
"plugin/lib/lita/plugin_type/plugin.tt",
|
133
|
+
"#{target}/lib/lita/#{namespace}/#{name}.rb",
|
134
|
+
config
|
135
|
+
)
|
136
|
+
template("plugin/lib/plugin.tt", "#{target}/lib/#{gem_name}.rb", config)
|
137
|
+
template(
|
138
|
+
"plugin/spec/lita/plugin_type/plugin_spec.tt",
|
139
|
+
"#{target}/spec/lita/#{namespace}/#{name}_spec.rb",
|
140
|
+
config
|
141
|
+
)
|
142
|
+
template(
|
143
|
+
"plugin/spec/spec_helper.tt",
|
144
|
+
"#{target}/spec/spec_helper.rb",
|
145
|
+
config
|
146
|
+
)
|
147
|
+
copy_file("plugin/Gemfile", "#{target}/Gemfile")
|
148
|
+
template("plugin/gemspec.tt", "#{target}/#{gem_name}.gemspec", config)
|
149
|
+
copy_file("plugin/gitignore", "#{target}/.gitignore")
|
150
|
+
copy_file("plugin/travis.yml", "#{target}/.travis.yml") if travis
|
151
|
+
template("plugin/LICENSE.tt", "#{target}/LICENSE", config)
|
152
|
+
copy_file("plugin/Rakefile", "#{target}/Rakefile")
|
153
|
+
template("plugin/README.tt", "#{target}/README.md", config)
|
154
|
+
end
|
155
|
+
|
156
|
+
def normalize_names(name)
|
157
|
+
name = name.downcase.sub(/^lita[_-]/, "")
|
158
|
+
gem_name = "lita-#{name}"
|
159
|
+
name = name.tr("-", "_")
|
160
|
+
[name, gem_name]
|
161
|
+
end
|
162
|
+
|
163
|
+
def optional_content
|
164
|
+
coveralls_question = <<-Q.chomp
|
165
|
+
Do you want to generate code coverage information with SimpleCov \
|
166
|
+
and Coveralls.io?
|
167
|
+
Q
|
168
|
+
{
|
169
|
+
travis: yes?("Do you want to test your plugin on Travis CI?"),
|
170
|
+
coveralls: yes?(coveralls_question)
|
171
|
+
}
|
66
172
|
end
|
67
173
|
end
|
68
174
|
end
|
data/lib/lita/handler.rb
CHANGED
@@ -102,15 +102,15 @@ module Lita
|
|
102
102
|
|
103
103
|
# Determines whether or not an incoming messages should trigger a route.
|
104
104
|
def route_applies?(route, message, robot)
|
105
|
-
# Message must match the pattern
|
106
|
-
return unless route.pattern === message.body
|
107
|
-
|
108
105
|
# Message must be a command if the route requires a command
|
109
106
|
return if route.command? && !message.command?
|
110
107
|
|
111
108
|
# Messages from self should be ignored to prevent infinite loops
|
112
109
|
return if message.user.name == robot.name
|
113
110
|
|
111
|
+
# Message must match the pattern
|
112
|
+
return unless route.pattern === message.body
|
113
|
+
|
114
114
|
# User must be in auth group if route is restricted
|
115
115
|
return unless authorized?(message.user, route.required_groups)
|
116
116
|
|
data/lib/lita/response.rb
CHANGED
@@ -18,7 +18,7 @@ module Lita
|
|
18
18
|
# @see Lita::Message#reply
|
19
19
|
# @!method user
|
20
20
|
# @see Lita::Message#user
|
21
|
-
def_delegators :message, :args, :reply, :user
|
21
|
+
def_delegators :message, :args, :reply, :user, :command?
|
22
22
|
|
23
23
|
# @param message [Lita::Message] The incoming message.
|
24
24
|
# @param matches [Array<String>, Array<Array<String>>] The Regexp matches.
|
data/lib/lita/version.rb
CHANGED
@@ -26,9 +26,16 @@ describe Lita::Adapters::Shell do
|
|
26
26
|
|
27
27
|
describe "#send_message" do
|
28
28
|
it "prints its input" do
|
29
|
-
expect(subject).to receive(:puts)
|
29
|
+
expect(subject).to receive(:puts) do |messages|
|
30
|
+
expect(messages.first).to include("bar")
|
31
|
+
end
|
30
32
|
subject.send_messages(double("target"), "bar")
|
31
33
|
end
|
34
|
+
|
35
|
+
it "doesn't output empty messages" do
|
36
|
+
expect(subject).to receive(:puts).with([])
|
37
|
+
subject.send_messages(double("target"), "")
|
38
|
+
end
|
32
39
|
end
|
33
40
|
|
34
41
|
describe "#shut_down" do
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Response do
|
4
|
+
subject { described_class.new(message) }
|
5
|
+
|
6
|
+
let(:message) { double("Lita::Message").as_null_object }
|
7
|
+
|
8
|
+
[:args, :reply, :user, :command?].each do |method|
|
9
|
+
it "delegates :#{method} to #message" do
|
10
|
+
expect(message).to receive(method)
|
11
|
+
subject.public_send(method)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) <%= Time.now.year %> <%= config[:author] %>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# <%= config[:gem_name] %>
|
2
|
+
|
3
|
+
TODO: Add a description of the plugin.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add <%= config[:gem_name] %> to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "<%= config[:gem_name] %>"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Configuration
|
14
|
+
|
15
|
+
TODO: Describe any configuration attributes the plugin exposes.
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
TODO: Describe the plugin's features and how to use them.
|
20
|
+
|
21
|
+
## License
|
22
|
+
|
23
|
+
[MIT](http://opensource.org/licenses/MIT)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "<%= config[:gem_name] %>"
|
3
|
+
spec.version = "0.0.1"
|
4
|
+
spec.authors = ["<%= config[:author] %>"]
|
5
|
+
spec.email = ["<%= config[:email] %>"]
|
6
|
+
spec.description = %q{TODO: Add a description}
|
7
|
+
spec.summary = %q{TODO: Add a summary}
|
8
|
+
spec.homepage = "TODO: Add a homepage"
|
9
|
+
spec.license = "MIT"
|
10
|
+
|
11
|
+
spec.files = `git ls-files`.split($/)
|
12
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
13
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
14
|
+
spec.require_paths = ["lib"]
|
15
|
+
|
16
|
+
spec.add_runtime_dependency "lita", "~> <%= config[:required_lita_version] %>"
|
17
|
+
|
18
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
19
|
+
spec.add_development_dependency "rake"
|
20
|
+
spec.add_development_dependency "rspec", ">= 2.14"
|
21
|
+
<%- if config[:coveralls] -%>
|
22
|
+
spec.add_development_dependency "simplecov"
|
23
|
+
spec.add_development_dependency "coveralls"
|
24
|
+
<%- end -%>
|
25
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
module Lita
|
4
|
+
module <%= config[:constant_namespace] %>
|
5
|
+
class <%= config[:constant_name] %> < <%= config[:plugin_type].capitalize %>
|
6
|
+
end
|
7
|
+
|
8
|
+
<%- if config[:plugin_type] == "adapter" -%>
|
9
|
+
Lita.register_adapter(:<%= config[:name] %>, <%= config[:constant_name] %>)
|
10
|
+
<%- else -%>
|
11
|
+
Lita.register_handler(<%= config[:constant_name] %>)
|
12
|
+
<%- end -%>
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require "lita/<%= config[:namespace] %>/<%= config[:name] %>"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%- if config[:coveralls] -%>
|
2
|
+
require "simplecov"
|
3
|
+
require "coveralls"
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
SimpleCov.start { add_filter "/spec/" }
|
9
|
+
|
10
|
+
<%- end -%>
|
11
|
+
require "<%= config[:gem_name] %>"
|
12
|
+
require "lita/rspec"
|
File without changes
|
File without changes
|
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: 2.
|
4
|
+
version: 2.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: 2013-08-
|
11
|
+
date: 2013-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -231,8 +231,6 @@ files:
|
|
231
231
|
- lib/lita/util.rb
|
232
232
|
- lib/lita/version.rb
|
233
233
|
- lita.gemspec
|
234
|
-
- skeleton/Gemfile
|
235
|
-
- skeleton/lita_config.rb
|
236
234
|
- spec/lita/adapter_spec.rb
|
237
235
|
- spec/lita/adapters/shell_spec.rb
|
238
236
|
- spec/lita/authorization_spec.rb
|
@@ -243,6 +241,7 @@ files:
|
|
243
241
|
- spec/lita/handlers/web_spec.rb
|
244
242
|
- spec/lita/logger_spec.rb
|
245
243
|
- spec/lita/message_spec.rb
|
244
|
+
- spec/lita/response_spec.rb
|
246
245
|
- spec/lita/robot_spec.rb
|
247
246
|
- spec/lita/rspec_spec.rb
|
248
247
|
- spec/lita/source_spec.rb
|
@@ -250,6 +249,19 @@ files:
|
|
250
249
|
- spec/lita/util_spec.rb
|
251
250
|
- spec/lita_spec.rb
|
252
251
|
- spec/spec_helper.rb
|
252
|
+
- templates/plugin/Gemfile
|
253
|
+
- templates/plugin/LICENSE.tt
|
254
|
+
- templates/plugin/README.tt
|
255
|
+
- templates/plugin/Rakefile
|
256
|
+
- templates/plugin/gemspec.tt
|
257
|
+
- templates/plugin/gitignore
|
258
|
+
- templates/plugin/lib/lita/plugin_type/plugin.tt
|
259
|
+
- templates/plugin/lib/plugin.tt
|
260
|
+
- templates/plugin/spec/lita/plugin_type/plugin_spec.tt
|
261
|
+
- templates/plugin/spec/spec_helper.tt
|
262
|
+
- templates/plugin/travis.yml
|
263
|
+
- templates/robot/Gemfile
|
264
|
+
- templates/robot/lita_config.rb
|
253
265
|
homepage: https://github.com/jimmycuadra/lita
|
254
266
|
licenses:
|
255
267
|
- MIT
|
@@ -285,6 +297,7 @@ test_files:
|
|
285
297
|
- spec/lita/handlers/web_spec.rb
|
286
298
|
- spec/lita/logger_spec.rb
|
287
299
|
- spec/lita/message_spec.rb
|
300
|
+
- spec/lita/response_spec.rb
|
288
301
|
- spec/lita/robot_spec.rb
|
289
302
|
- spec/lita/rspec_spec.rb
|
290
303
|
- spec/lita/source_spec.rb
|