gh-events 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/gh/events/slack.rb +27 -2
- data/lib/gh/events/version.rb +1 -1
- data/res/slack.yml +73 -19
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2008b1c5311735ce045e5007f3fb77a30df7881c2a2e3eae4b01ee11b93feda4
|
4
|
+
data.tar.gz: 8df066ce105675449515e12fe44c404d5683d55bc74fee7454d90dde9168f372
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f303f779bbdd664d88e5225c3eb73176d4b4b8784c1c7463423be4a4a9c0103df6632ef4c68032bcb8cea6dfb0d2fb3ba95f94c2fc19dadceefef1e9c234762f
|
7
|
+
data.tar.gz: 01a062898625a3195113d8d79d19c2c0c4a3edfd7e673bcf68ef5fec2349e6bfe3af94120a843a9677fe9025d1c1f11a3b41654dc64dfc34da2fabbd76f1805d
|
data/Gemfile.lock
CHANGED
data/lib/gh/events/slack.rb
CHANGED
@@ -7,6 +7,10 @@ module GH::Events::Slack
|
|
7
7
|
|
8
8
|
extend self
|
9
9
|
|
10
|
+
# this is a carefully curated list of fields in gh events that might
|
11
|
+
# be helpful when filtering events
|
12
|
+
ASPECTS = %i[type action state context]
|
13
|
+
|
10
14
|
def translate(payload)
|
11
15
|
event = JSON.parse(payload, object_class: OpenStruct)
|
12
16
|
type = GH::Events.typeof(event).to_s
|
@@ -16,8 +20,29 @@ module GH::Events::Slack
|
|
16
20
|
event.ref_type = 'tag' if event.ref&.match(/^refs\/tags\//)
|
17
21
|
event.ref = event.ref&.split('/')&.last
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
# add type to the event
|
24
|
+
event.type = type
|
25
|
+
|
26
|
+
# collect the aspects
|
27
|
+
aspects = ASPECTS.map { |a| event.send(a) }.compact
|
28
|
+
|
29
|
+
# add the specific type (stype) to the event
|
30
|
+
event.stype = aspects * '.'
|
31
|
+
|
32
|
+
# lookup the template by type and all the specific types
|
33
|
+
_result = aspects.reduce({as: [], ts: []}) do |r, aspect|
|
34
|
+
r[:as] << aspect
|
35
|
+
r[:ts] << templates[r[:as] * '.']
|
36
|
+
r
|
37
|
+
end
|
38
|
+
template = _result[:ts].compact.last
|
39
|
+
|
40
|
+
# if the event was set to `false` abort
|
41
|
+
exit(1) if template === false
|
42
|
+
|
43
|
+
# if there is no template use a default
|
44
|
+
template ||= templates['no_template']
|
45
|
+
|
21
46
|
render(template, event)
|
22
47
|
end
|
23
48
|
|
data/lib/gh/events/version.rb
CHANGED
data/res/slack.yml
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# refs are unified. So all events have `ref` and `ref_type`.
|
2
2
|
|
3
|
-
unknown:
|
4
|
-
text: >-
|
5
|
-
An unknown event occurred.
|
6
|
-
|
7
3
|
push:
|
8
4
|
text: >-
|
9
5
|
:arrow_up:
|
@@ -50,7 +46,7 @@ create:
|
|
50
46
|
|
51
47
|
delete:
|
52
48
|
text: >-
|
53
|
-
:
|
49
|
+
:wastebasket:
|
54
50
|
<<%= sender.html_url %>|<%= sender.login %>>
|
55
51
|
deleted
|
56
52
|
<%= ref_type %> `<%= ref %>`
|
@@ -77,7 +73,20 @@ issues:
|
|
77
73
|
<%= action %>
|
78
74
|
issue <<%= issue.html_url %>|<%= issue.title %>>
|
79
75
|
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
80
|
-
|
76
|
+
|
77
|
+
issues.opened:
|
78
|
+
text: >-
|
79
|
+
:inbox_tray:
|
80
|
+
new issue
|
81
|
+
<<%= issue.html_url %>|<%= issue.title %>>
|
82
|
+
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
83
|
+
attachments:
|
84
|
+
- fallback: <%= issue.body %>
|
85
|
+
color: red
|
86
|
+
author_name: <%= sender.login %>
|
87
|
+
author_link: <%= sender.html_url %>
|
88
|
+
author_icon: <%= sender.avatar_url %>
|
89
|
+
text: <%= issue.body %>
|
81
90
|
|
82
91
|
issues.labeled:
|
83
92
|
text: >-
|
@@ -96,6 +105,21 @@ pull_request:
|
|
96
105
|
PR <<%= pull_request.html_url %>|<%= pull_request.title %>>
|
97
106
|
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
98
107
|
|
108
|
+
pull_request.opened:
|
109
|
+
text: >-
|
110
|
+
:gift:
|
111
|
+
<<%= sender.html_url %>|<%= sender.login %>>
|
112
|
+
opened
|
113
|
+
PR <<%= pull_request.html_url %>|<%= pull_request.title %>>
|
114
|
+
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
115
|
+
attachments:
|
116
|
+
- fallback: <%= pull_request.body %>
|
117
|
+
color: red
|
118
|
+
author_name: <%= sender.login %>
|
119
|
+
author_link: <%= sender.html_url %>
|
120
|
+
author_icon: <%= sender.avatar_url %>
|
121
|
+
text: <%= pull_request.body %>
|
122
|
+
|
99
123
|
pull_request.labeled:
|
100
124
|
text: >-
|
101
125
|
<<%= sender.html_url %>|<%= sender.login %>>
|
@@ -107,9 +131,15 @@ pull_request.labeled:
|
|
107
131
|
pull_request_review_comment:
|
108
132
|
text: >-
|
109
133
|
:left_speech_bubble:
|
110
|
-
|
111
|
-
|
112
|
-
|
134
|
+
new review comment
|
135
|
+
on <<%= comment.html_url %>|<%= pull_request.title %>>
|
136
|
+
attachments:
|
137
|
+
- fallback: <%= comment.body %>
|
138
|
+
color: red
|
139
|
+
author_name: <%= sender.login %>
|
140
|
+
author_link: <%= sender.html_url %>
|
141
|
+
author_icon: <%= sender.avatar_url %>
|
142
|
+
text: <%= comment.body %>
|
113
143
|
|
114
144
|
star:
|
115
145
|
text: >-
|
@@ -119,18 +149,11 @@ star:
|
|
119
149
|
<<%= repository.html_url %>|<%= repository.full_name %>>
|
120
150
|
:star: <%= repository.stargazers_count %>
|
121
151
|
|
122
|
-
watch:
|
123
|
-
text: >-
|
124
|
-
:eye:
|
125
|
-
<<%= sender.html_url %>|<%= sender.login %>>
|
126
|
-
<%= action == 'created' ? 'started' : 'stopped' %> watching
|
127
|
-
<<%= repository.html_url %>|<%= repository.full_name %>>
|
128
|
-
:eye: <%= repository.watchers_count %>
|
129
|
-
|
130
152
|
# Ignore other status udpates than CircleCI failures for the moment
|
131
153
|
status:
|
132
154
|
text: >-
|
133
155
|
<% if context.match(/circleci/) and state == 'failure' %>
|
156
|
+
[`<%= stype %>`]
|
134
157
|
<<%= target_url %> | CircleCI build >
|
135
158
|
fails for commit
|
136
159
|
<<%= commit.html_url %> | <%= commit.commit.message %>>
|
@@ -138,12 +161,17 @@ status:
|
|
138
161
|
<<%= sender.html_url %>|<%= sender.login %>>
|
139
162
|
<% end %>
|
140
163
|
|
164
|
+
fork:
|
165
|
+
text: >-
|
166
|
+
:fork_and_knife:
|
167
|
+
[`<%= stype >`]
|
168
|
+
<<%= sender.html_url %>|<%= sender.login %>>
|
169
|
+
forked <<%= repository.html_url %>|<%= repository.full_name %>>
|
170
|
+
|
141
171
|
deployment:
|
142
172
|
text: An event of type `deployment` occurred.
|
143
173
|
deployment_status:
|
144
174
|
text: An event of type `deployment_status` occurred.
|
145
|
-
fork:
|
146
|
-
text: An event of type `fork` occurred.
|
147
175
|
gollum:
|
148
176
|
text: An event of type `gollum` occurred.
|
149
177
|
member:
|
@@ -160,3 +188,29 @@ repository:
|
|
160
188
|
text: An event of type `repository` occurred.
|
161
189
|
team_add:
|
162
190
|
text: An event of type `team_add` occurred.
|
191
|
+
|
192
|
+
# `false` will make it end with exit code 1
|
193
|
+
watch: false
|
194
|
+
|
195
|
+
# `no_template` will be used for recognized events which have no
|
196
|
+
# template assigned.
|
197
|
+
no_template:
|
198
|
+
text: No template for event of type `<%= stype %>`.
|
199
|
+
attachments:
|
200
|
+
- fallback: Event details as json.
|
201
|
+
color: gray
|
202
|
+
text: |
|
203
|
+
```
|
204
|
+
<%= JSON.unparse(self.marshal_dump) %>
|
205
|
+
```
|
206
|
+
|
207
|
+
# `unknown` will be used for events that could not be recognized.
|
208
|
+
unknown:
|
209
|
+
text: An unknown event occurred (stype: `<%=stype%>`)
|
210
|
+
attachments:
|
211
|
+
- fallback: Event details as json.
|
212
|
+
color: gray
|
213
|
+
text: |
|
214
|
+
```
|
215
|
+
<%= JSON.unparse(self.marshal_dump) %>
|
216
|
+
```
|