lita-gerrit 0.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +59 -0
- data/Rakefile +6 -0
- data/contrib/lita-gerrit-hook +41 -0
- data/lib/lita-gerrit.rb +1 -0
- data/lib/lita/handlers/gerrit.rb +103 -0
- data/lita-gerrit.gemspec +25 -0
- data/spec/lita/handlers/gerrit_spec.rb +73 -0
- data/spec/spec_helper.rb +10 -0
- metadata +157 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 03892ea9cf8863f344836f19e638f7ae7a091821
|
4
|
+
data.tar.gz: dd388d3257cdbeab80e960b2aace43fb199bba88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bbb6b6115f5e70481ec70b1029fe77c20413232d7d4d2041a70314c4f4b08d5a0224f982f1c043d8cef3965b1076e644c8df518afd00ec290e2ef63a9529bad8
|
7
|
+
data.tar.gz: 63501906c688043f9f0e7e9e241b2f26bd031f0ba178779e6e033a64c5d37960c35ff1adc8bfe4c0dbaca7c3d0701e0bd10571f25206b245f7dc14b933e7f88f
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2013 Jonathan Amiez
|
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.
|
data/README.md
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# lita-gerrit
|
2
|
+
|
3
|
+
[](https://travis-ci.org/josqu4red/lita-gerrit)
|
4
|
+
[](https://coveralls.io/r/josqu4red/lita-gerrit)
|
5
|
+
|
6
|
+
**lita-gerrit** is a handler for [Lita](https://github.com/jimmycuadra/lita) that allows interaction with Gerrit code review tool.
|
7
|
+
|
8
|
+
It allows to fetch Gerrit changes details from the chat and listens for hook events on HTTP interface.
|
9
|
+
|
10
|
+
It depends on HTTParty because Gerrit uses HTTP digest authentication, which is not supported by Lita's built-in HTTP client, Faraday.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Add lita-gerrit to your Lita instance's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem "lita-gerrit"
|
18
|
+
```
|
19
|
+
|
20
|
+
## Configuration
|
21
|
+
|
22
|
+
* `url` (String) - Gerrit service URL
|
23
|
+
* `username` (String) - Username for REST API
|
24
|
+
* `password` (String) - Password for REST API
|
25
|
+
|
26
|
+
### Example
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
Lita.configure do |config|
|
30
|
+
config.handlers.gerrit.url = "https://gerrit.example.com"
|
31
|
+
config.handlers.gerrit.username = "foo"
|
32
|
+
config.handlers.gerrit.password = "bar"
|
33
|
+
end
|
34
|
+
```
|
35
|
+
|
36
|
+
## Usage
|
37
|
+
|
38
|
+
### Chat functions
|
39
|
+
|
40
|
+
```
|
41
|
+
lita > gerrit 42
|
42
|
+
gerrit: Display debug informations with correct log level by John Doe in chef. http://gerrit.example.com/42
|
43
|
+
(gerrit: <commit message> by <author> in <project>. <url>)
|
44
|
+
```
|
45
|
+
|
46
|
+
### HTTP endpoints
|
47
|
+
|
48
|
+
lita-gerrit listens for events triggered by Gerrit hooks. An example hook is provided in [contrib](https://github.com/josqu4red/lita-gerrit/tree/master/contrib) directory.
|
49
|
+
|
50
|
+
Currently only these hooks are implemented:
|
51
|
+
* patchset_created
|
52
|
+
* comment_added
|
53
|
+
* change_merged
|
54
|
+
|
55
|
+
See list of supported hooks in [Gerrit doc](https://gerrit-review.googlesource.com/Documentation/config-hooks.html)
|
56
|
+
|
57
|
+
## License
|
58
|
+
|
59
|
+
[MIT](http://opensource.org/licenses/MIT)
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#
|
4
|
+
## Lita gerrit handler
|
5
|
+
#
|
6
|
+
# Usage:
|
7
|
+
#
|
8
|
+
# Symlink this script to Gerrit hook folder ($GERRIT_HOME/hooks/<hook_name>)
|
9
|
+
# Where <hook_name> is one of the list https://gerrit-review.googlesource.com/Documentation/config-hooks.html#_supported_hooks
|
10
|
+
#
|
11
|
+
# e.g ln -s lita-gerrit-hook $GERRIT_HOME/hooks/patchset-created to enable that hook
|
12
|
+
#
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "net/http"
|
16
|
+
require "getoptlong"
|
17
|
+
|
18
|
+
lita_url = "http://localhost:8080/gerrit/hooks"
|
19
|
+
lita_room = "#my_chan"
|
20
|
+
|
21
|
+
args = [
|
22
|
+
"CRVW", "VRID",
|
23
|
+
"abandoner", "author", "branch", "change", "change-url", "changer",
|
24
|
+
"cla-id", "comment", "commit", "is-draft", "new-topic", "newrev",
|
25
|
+
"old-topic", "oldrev", "patchset", "project", "reason", "refname",
|
26
|
+
"restorer", "reviewer", "submitter", "topic", "uploader", "user-id"
|
27
|
+
]
|
28
|
+
|
29
|
+
opts = GetoptLong.new(*args.map{ |arg| [ "--#{arg}", GetoptLong::REQUIRED_ARGUMENT] })
|
30
|
+
|
31
|
+
options = {
|
32
|
+
"room" => lita_room,
|
33
|
+
"action" => File.basename($0)
|
34
|
+
}
|
35
|
+
|
36
|
+
opts.each do |opt, arg|
|
37
|
+
key = opt.gsub(/^--/, "")
|
38
|
+
options[key] = URI.encode(arg)
|
39
|
+
end
|
40
|
+
|
41
|
+
request = Net::HTTP.post_form(URI.parse(lita_url), options)
|
data/lib/lita-gerrit.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "lita/handlers/gerrit"
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require "lita"
|
2
|
+
require "httparty"
|
3
|
+
|
4
|
+
module Lita
|
5
|
+
module Handlers
|
6
|
+
class Gerrit < Handler
|
7
|
+
|
8
|
+
def self.default_config(config)
|
9
|
+
config.url = "https://gerrit.example.com"
|
10
|
+
config.username = "foo"
|
11
|
+
config.password = "bar"
|
12
|
+
config.default_room = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
#
|
16
|
+
# Fetch details of a given patchset
|
17
|
+
#
|
18
|
+
|
19
|
+
route /gerrit\s+(\d+)/, :change_details, help: { "gerrit <change #>" => "Displays details of a gerrit change" }
|
20
|
+
|
21
|
+
def change_details(response)
|
22
|
+
change_id = response.matches.flatten.first
|
23
|
+
change_uri = URI.join(Lita.config.handlers.gerrit.url, "/a/changes/", change_id)
|
24
|
+
change_link = URI.join(Lita.config.handlers.gerrit.url, change_id)
|
25
|
+
|
26
|
+
http_resp = HTTParty.get(change_uri, :digest_auth => {
|
27
|
+
username: Lita.config.handlers.gerrit.username,
|
28
|
+
password: Lita.config.handlers.gerrit.password
|
29
|
+
})
|
30
|
+
|
31
|
+
case http_resp.code
|
32
|
+
when 200
|
33
|
+
change = MultiJson.load(http_resp.body.lines.to_a[1..-1].join)
|
34
|
+
message = "gerrit: #{change["subject"]} by #{change["owner"]["name"]} in #{change["project"]}. #{change_link}"
|
35
|
+
when 404
|
36
|
+
message = "Change ##{change_id} does not exist"
|
37
|
+
else
|
38
|
+
raise "Failed to fetch #{change_uri} (#{http_resp.code})"
|
39
|
+
end
|
40
|
+
|
41
|
+
response.reply(message)
|
42
|
+
rescue Exception => e
|
43
|
+
response.reply("Error: #{e.message}")
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Notify the creation/comment/merge/etc. of a Gerrit patchset
|
48
|
+
#
|
49
|
+
|
50
|
+
http.post "/gerrit/hooks", :hook
|
51
|
+
|
52
|
+
def hook(request, response)
|
53
|
+
if request.params.has_key?("action")
|
54
|
+
action = request.params["action"].gsub("-", "_").to_sym
|
55
|
+
|
56
|
+
unless respond_to?(action, true)
|
57
|
+
raise "Action #{action} is not supported by Gerrit handler"
|
58
|
+
end
|
59
|
+
else
|
60
|
+
raise "Action must be defined in hook's parameters"
|
61
|
+
end
|
62
|
+
|
63
|
+
if request.params.has_key?("room")
|
64
|
+
room = request.params["room"]
|
65
|
+
elsif Lita.config.handlers.gerrit.default_room
|
66
|
+
room = Lita.config.handlers.gerrit.default_room
|
67
|
+
else
|
68
|
+
raise "Room must be defined. Either fix your hook or specify a default room ('config.handlers.gerrit.default_room')"
|
69
|
+
end
|
70
|
+
|
71
|
+
# build message from action and params
|
72
|
+
message = send(action, request.params)
|
73
|
+
target = Source.new(room: room)
|
74
|
+
|
75
|
+
robot.send_message(target, message)
|
76
|
+
rescue Exception => e
|
77
|
+
Lita.logger.error(e.message)
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
# List of supported hooks
|
83
|
+
# (https://gerrit-review.googlesource.com/Documentation/config-hooks.html#_supported_hooks)
|
84
|
+
|
85
|
+
def patchset_created(params)
|
86
|
+
message = "gerrit: patchset %s has been uploaded by %s in %s. %s"
|
87
|
+
message % [params["patchset"], params["uploader"], params["project"], params["change-url"]]
|
88
|
+
end
|
89
|
+
|
90
|
+
def comment_added(params)
|
91
|
+
message = "gerrit(%s): %s commented %s (V:%s/CR:%s)"
|
92
|
+
message % [params["project"], params["author"], params["change-url"], params["verified"], params["reviewed"]]
|
93
|
+
end
|
94
|
+
|
95
|
+
def change_merged(params)
|
96
|
+
message = "gerrit: Merge of %s by %s in %s"
|
97
|
+
message % [params["change-url"], params["submitted"], params["project"]]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
Lita.register_handler(Gerrit)
|
102
|
+
end
|
103
|
+
end
|
data/lita-gerrit.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-gerrit"
|
3
|
+
spec.version = "0.0.1"
|
4
|
+
spec.authors = ["Jonathan Amiez"]
|
5
|
+
spec.email = ["jonathan.amiez@gmail.com"]
|
6
|
+
spec.description = "Gerrit API client and hook events handler"
|
7
|
+
spec.summary = "Retrieve change status from chat and display events"
|
8
|
+
spec.homepage = "https://github.com/josqu4red/lita-gerrit"
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", "~> 3.0"
|
18
|
+
spec.add_runtime_dependency "httparty", "~> 0.13.0"
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rspec", ">= 3.0.0.beta2"
|
23
|
+
spec.add_development_dependency "simplecov"
|
24
|
+
spec.add_development_dependency "coveralls"
|
25
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::Gerrit, lita_handler: true do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Lita.configure do |config|
|
7
|
+
config.handlers.gerrit.url = "https://gerrit.example.com"
|
8
|
+
config.handlers.gerrit.username = "foo"
|
9
|
+
config.handlers.gerrit.password = "bar"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it { routes("get me gerrit 123, please").to(:change_details) }
|
14
|
+
it { doesnt_route("gerrit foo").to(:change_details) }
|
15
|
+
|
16
|
+
it { routes_http(:post, "/gerrit/hooks").to(:hook) }
|
17
|
+
|
18
|
+
describe "#change_details" do
|
19
|
+
let(:response) do
|
20
|
+
double("HTTParty::Response")
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
24
|
+
allow(HTTParty).to receive(:get).and_return(response)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "replies with the title and URL for the issue" do
|
28
|
+
allow(response).to receive(:code).and_return(200)
|
29
|
+
|
30
|
+
allow(response).to receive(:body).and_return(<<-JSON.chomp
|
31
|
+
)]}'
|
32
|
+
{
|
33
|
+
"kind": "gerritcodereview#change",
|
34
|
+
"id": "chef~master~Ib0b61ed3eebb8e22596a8401bf976949d798826a",
|
35
|
+
"project": "chef",
|
36
|
+
"branch": "master",
|
37
|
+
"topic": "beanstalk",
|
38
|
+
"change_id": "Ib0b61ed3eebb8e22596a8401bf976949d798826a",
|
39
|
+
"subject": "haproxy : migrate beanstalk frontend",
|
40
|
+
"status": "MERGED",
|
41
|
+
"created": "2014-03-14 12:42:15.320000000",
|
42
|
+
"updated": "2014-03-17 10:32:21.311000000",
|
43
|
+
"_sortkey": "002bcd180000096b",
|
44
|
+
"_number": 42,
|
45
|
+
"owner": {
|
46
|
+
"name": "John Doe"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
JSON
|
50
|
+
)
|
51
|
+
|
52
|
+
send_command("gerrit 42")
|
53
|
+
|
54
|
+
expect(replies.last).to eq("gerrit: haproxy : migrate beanstalk frontend by John Doe in chef. https://gerrit.example.com/42")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "replies that the issue doesn't exist" do
|
58
|
+
allow(response).to receive(:code).and_return(404)
|
59
|
+
|
60
|
+
send_command("gerrit 42")
|
61
|
+
|
62
|
+
expect(replies.last).to eq("Change #42 does not exist")
|
63
|
+
end
|
64
|
+
|
65
|
+
it "replies with an exception message" do
|
66
|
+
allow(response).to receive(:code).and_return(500)
|
67
|
+
|
68
|
+
send_command("gerrit 42")
|
69
|
+
|
70
|
+
expect(replies.last).to match("Error: Failed to fetch https://gerrit.example.com/a/changes/42 (500)")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
require "coveralls"
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
5
|
+
Coveralls::SimpleCov::Formatter
|
6
|
+
]
|
7
|
+
SimpleCov.start { add_filter "/spec/" }
|
8
|
+
|
9
|
+
require "lita-gerrit"
|
10
|
+
require "lita/rspec"
|
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-gerrit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Amiez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: httparty
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.13.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.13.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.0.0.beta2
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.0.0.beta2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Gerrit API client and hook events handler
|
112
|
+
email:
|
113
|
+
- jonathan.amiez@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".travis.yml"
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- contrib/lita-gerrit-hook
|
125
|
+
- lib/lita-gerrit.rb
|
126
|
+
- lib/lita/handlers/gerrit.rb
|
127
|
+
- lita-gerrit.gemspec
|
128
|
+
- spec/lita/handlers/gerrit_spec.rb
|
129
|
+
- spec/spec_helper.rb
|
130
|
+
homepage: https://github.com/josqu4red/lita-gerrit
|
131
|
+
licenses:
|
132
|
+
- MIT
|
133
|
+
metadata:
|
134
|
+
lita_plugin_type: handler
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
requirements: []
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 2.2.0
|
152
|
+
signing_key:
|
153
|
+
specification_version: 4
|
154
|
+
summary: Retrieve change status from chat and display events
|
155
|
+
test_files:
|
156
|
+
- spec/lita/handlers/gerrit_spec.rb
|
157
|
+
- spec/spec_helper.rb
|