gh-events 0.5.0 → 0.6.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/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
|
+
```
|