lita-travis 0.1.2 → 0.2.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/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
|