lita-travis 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -3
- data/lib/lita/handlers/travis.rb +22 -18
- data/lita-travis.gemspec +1 -1
- data/locales/en.yml +15 -0
- data/spec/lita/handlers/travis_spec.rb +20 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 281766fc85013339455d961b7e50a8d474652096
|
4
|
+
data.tar.gz: 6344a3fdf756025ef3c61b0320b67cf4bfa3ac28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e58c006f89c8bc6fa830e06c89761a63e512e12c7df7767868c6494f67d96244ff729e26f757dcf1a65ba1924921a91972596b5526e9426aa8729983303ae8f9
|
7
|
+
data.tar.gz: bdafa443957cad73565a555b140f9d8e15f86b85990860379b48dbecf75b9254580917be1b7bf1e2fcacc5031d837f26e1e57a6085e33511af9d5f1f7f970108
|
data/README.md
CHANGED
@@ -22,7 +22,8 @@ gem "lita-travis"
|
|
22
22
|
|
23
23
|
### Optional attributes
|
24
24
|
|
25
|
-
* `repos` (Hash) - A
|
25
|
+
* `repos` (Hash) - A hash of repositories names and the chat rooms to post their notifications in. The keys should be strings in the format "github_username/repository_name" and the values should be either a string room name or an array of string room names. Default: `{}`.
|
26
|
+
* `default_rooms` (String, Array<String>) - A string room name or an array of string room names where notifications for repositories not explicitly specified in the `repos` hash should be sent. If `nil`, notifications for unknown repositories will be ignored. Default: `nil`.
|
26
27
|
|
27
28
|
### Example
|
28
29
|
|
@@ -30,9 +31,10 @@ gem "lita-travis"
|
|
30
31
|
Lita.configure do |config|
|
31
32
|
config.handlers.travis.token = "abcdefg123"
|
32
33
|
config.handlers.travis.repos = {
|
33
|
-
"username/repo1" => "#
|
34
|
-
"username/repo2" => ["#
|
34
|
+
"username/repo1" => "#repo1_team",
|
35
|
+
"username/repo2" => ["#repo2_team", "#other_team"]
|
35
36
|
}
|
37
|
+
config.handlers.travis.default_rooms = "#engineering"
|
36
38
|
end
|
37
39
|
```
|
38
40
|
|
data/lib/lita/handlers/travis.rb
CHANGED
@@ -9,6 +9,7 @@ module Lita
|
|
9
9
|
def self.default_config(config)
|
10
10
|
config.token = nil
|
11
11
|
config.repos = {}
|
12
|
+
config.default_rooms = nil
|
12
13
|
end
|
13
14
|
|
14
15
|
http.post "/travis", :receive
|
@@ -26,9 +27,7 @@ module Lita
|
|
26
27
|
begin
|
27
28
|
MultiJson.load(json)
|
28
29
|
rescue MultiJson::LoadError => e
|
29
|
-
Lita.logger.error(
|
30
|
-
"Could not parse JSON payload from Travis CI: #{e.message}"
|
31
|
-
)
|
30
|
+
Lita.logger.error(t("parse_error", message: e.message))
|
32
31
|
return
|
33
32
|
end
|
34
33
|
end
|
@@ -39,11 +38,16 @@ module Lita
|
|
39
38
|
|
40
39
|
def notify_rooms(repo, data)
|
41
40
|
rooms = rooms_for_repo(repo) or return
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
|
42
|
+
message = t(
|
43
|
+
"message",
|
44
|
+
repo: repo,
|
45
|
+
status_message: data["status_message"],
|
46
|
+
commit: data["commit"][0...7],
|
47
|
+
branch: data["branch"],
|
48
|
+
committer_name: data["committer_name"],
|
49
|
+
compare_url: data["compare_url"]
|
50
|
+
)
|
47
51
|
|
48
52
|
rooms.each do |room|
|
49
53
|
target = Source.new(room: room)
|
@@ -53,13 +57,14 @@ module Lita
|
|
53
57
|
|
54
58
|
def rooms_for_repo(repo)
|
55
59
|
rooms = Lita.config.handlers.travis.repos[repo]
|
60
|
+
default_rooms = Lita.config.handlers.travis.default_rooms
|
56
61
|
|
57
62
|
if rooms
|
58
63
|
Array(rooms)
|
64
|
+
elsif default_rooms
|
65
|
+
Array(default_rooms)
|
59
66
|
else
|
60
|
-
Lita.logger.warn
|
61
|
-
Notification from Travis CI for unconfigured project: #{repo}
|
62
|
-
WARNING
|
67
|
+
Lita.logger.warn(t("no_room_configured"), repo: repo)
|
63
68
|
return
|
64
69
|
end
|
65
70
|
end
|
@@ -68,17 +73,12 @@ WARNING
|
|
68
73
|
token = Lita.config.handlers.travis.token
|
69
74
|
|
70
75
|
unless token
|
71
|
-
Lita.logger.warn
|
72
|
-
Notification from Travis CI could not be validated because \
|
73
|
-
Lita.config.handlers.token is not set.
|
74
|
-
WARNING
|
76
|
+
Lita.logger.warn(t("no_token"))
|
75
77
|
return
|
76
78
|
end
|
77
79
|
|
78
80
|
unless Digest::SHA2.hexdigest("#{repo}#{token}") == auth_hash
|
79
|
-
Lita.logger.warn
|
80
|
-
Notification from Travis CI did not pass authentication.
|
81
|
-
WARNING
|
81
|
+
Lita.logger.warn(t("auth_failed"), repo: repo)
|
82
82
|
return
|
83
83
|
end
|
84
84
|
|
@@ -89,3 +89,7 @@ Notification from Travis CI did not pass authentication.
|
|
89
89
|
Lita.register_handler(Travis)
|
90
90
|
end
|
91
91
|
end
|
92
|
+
|
93
|
+
Lita.load_locales Dir[File.expand_path(
|
94
|
+
File.join("..", "..", "..", "..", "locales", "*.yml"), __FILE__
|
95
|
+
)]
|
data/lita-travis.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-travis"
|
3
|
-
spec.version = "0.
|
3
|
+
spec.version = "0.2.0"
|
4
4
|
spec.authors = ["Jimmy Cuadra"]
|
5
5
|
spec.email = ["jimmy@jimmycuadra.com"]
|
6
6
|
spec.description = %q{A Lita handler for receiving notifications from Travis CI.}
|
data/locales/en.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
en:
|
2
|
+
lita:
|
3
|
+
handlers:
|
4
|
+
travis:
|
5
|
+
auth_failed: "Notification from Travis CI for %{repo} did not pass authentication."
|
6
|
+
parse_error: "Could not parse JSON payload from Travis CI: %{message}"
|
7
|
+
message: >-
|
8
|
+
[Travis CI] %{repo}: %{status_message} at %{commit} (%{branch}) by
|
9
|
+
%{committer_name} - %{compare_url}"
|
10
|
+
no_room_configured: >-
|
11
|
+
Notification from Travis CI for %{repo} ignored because no rooms were specified in the
|
12
|
+
config.repos hash, and no default rooms were specified in config.default_rooms.
|
13
|
+
no_token: >-
|
14
|
+
Notification from Travis CI could not be validated because Lita.config.handlers.token
|
15
|
+
is not set.
|
@@ -102,16 +102,33 @@ describe Lita::Handlers::Travis, lita_handler: true do
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
context "
|
105
|
+
context "with only config.default_rooms set" do
|
106
106
|
before do
|
107
107
|
Lita.config.handlers.travis.token = "abc123"
|
108
|
+
Lita.config.handlers.travis.default_rooms = "#default"
|
108
109
|
allow(request).to receive(:env).and_return(valid_env)
|
109
110
|
allow(params).to receive(:[]).with("payload").and_return(valid_payload)
|
110
111
|
end
|
111
112
|
|
112
|
-
it "
|
113
|
+
it "sends a notification message to the applicable rooms" do
|
114
|
+
expect(robot).to receive(:send_message) do |target, message|
|
115
|
+
expect(target.room).to eq("#default")
|
116
|
+
expect(message).to include("[Travis CI]")
|
117
|
+
end
|
118
|
+
subject.receive(request, response)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context "without setting a value for the repo in config.repos and no default" do
|
123
|
+
before do
|
124
|
+
Lita.config.handlers.travis.token = "abc123"
|
125
|
+
allow(request).to receive(:env).and_return(valid_env)
|
126
|
+
allow(params).to receive(:[]).with("payload").and_return(valid_payload)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "logs a warning that the request was ignored" do
|
113
130
|
expect(Lita.logger).to receive(:warn) do |warning|
|
114
|
-
expect(warning).to include("
|
131
|
+
expect(warning).to include("ignored because no rooms were specified")
|
115
132
|
end
|
116
133
|
subject.receive(request, response)
|
117
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-travis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.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: 2014-02-
|
11
|
+
date: 2014-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- lib/lita-travis.rb
|
111
111
|
- lib/lita/handlers/travis.rb
|
112
112
|
- lita-travis.gemspec
|
113
|
+
- locales/en.yml
|
113
114
|
- spec/lita/handlers/travis_spec.rb
|
114
115
|
- spec/spec_helper.rb
|
115
116
|
homepage: https://github.com/jimmycuadra/lita-travis
|