gh-events 0.6.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +60 -0
- data/Gemfile.lock +5 -2
- data/LICENSE.md +7 -0
- data/README.md +72 -7
- data/exe/{gh-event2slack → gh-event2text} +1 -1
- data/exe/gh-events +15 -0
- data/gh-events.gemspec +1 -0
- data/lib/gh/events.rb +5 -2
- data/lib/gh/events/{slack.rb → text.rb} +16 -10
- data/lib/gh/events/version.rb +1 -1
- data/lib/hash.rb +9 -0
- data/res/events.yml +1 -1
- data/res/plain.yml +118 -0
- data/res/slack.yml +14 -5
- metadata +25 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f42768b024e11b3e98a2352ca81f6105d3ff4b9e5767efaa3bfb56377e8c2c7a
|
4
|
+
data.tar.gz: 43c3fa8883db2ab811e5e358966b50b0bef3a93c73a6446f8b31ce63df7b0a7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9f1922da318421f76427589360f62459fe37f134e468e0cd45650c41b4bd4ab5ca6181c871618986a236c299cf37852037e8996a7cb7054edf0862c320d9898
|
7
|
+
data.tar.gz: 9a8c9102ec4107c01b22c542d1963351fff72f68580f0131901f5556fc8c488c6abca496c9c7f6aab7bee8b3af958086e38e770a0da753117228fe8617bbd3bf
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Ruby CircleCI 2.0 configuration file
|
2
|
+
#
|
3
|
+
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
|
+
#
|
5
|
+
version: 2
|
6
|
+
jobs:
|
7
|
+
build:
|
8
|
+
docker:
|
9
|
+
# specify the version you desire here
|
10
|
+
- image: circleci/ruby:2.6.5
|
11
|
+
|
12
|
+
# Specify service dependencies here if necessary
|
13
|
+
# CircleCI maintains a library of pre-built images
|
14
|
+
# documented at https://circleci.com/docs/2.0/circleci-images/
|
15
|
+
# - image: circleci/postgres:9.4
|
16
|
+
|
17
|
+
working_directory: ~/repo
|
18
|
+
|
19
|
+
steps:
|
20
|
+
- checkout
|
21
|
+
|
22
|
+
# Download and cache dependencies
|
23
|
+
- restore_cache:
|
24
|
+
keys:
|
25
|
+
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
26
|
+
# fallback to using the latest cache if no exact match is found
|
27
|
+
- v1-dependencies-
|
28
|
+
|
29
|
+
- run:
|
30
|
+
name: install dependencies
|
31
|
+
command: |
|
32
|
+
gem install bundler:2.0.2
|
33
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
34
|
+
|
35
|
+
- save_cache:
|
36
|
+
paths:
|
37
|
+
- ./vendor/bundle
|
38
|
+
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
39
|
+
|
40
|
+
# run tests!
|
41
|
+
- run:
|
42
|
+
name: run tests
|
43
|
+
command: |
|
44
|
+
mkdir /tmp/test-results
|
45
|
+
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
|
46
|
+
circleci tests split --split-by=timings)"
|
47
|
+
|
48
|
+
bundle exec rspec \
|
49
|
+
--format progress \
|
50
|
+
--format RspecJunitFormatter \
|
51
|
+
--out /tmp/test-results/rspec.xml \
|
52
|
+
--format progress \
|
53
|
+
$TEST_FILES
|
54
|
+
|
55
|
+
# collect reports
|
56
|
+
- store_test_results:
|
57
|
+
path: /tmp/test-results
|
58
|
+
- store_artifacts:
|
59
|
+
path: /tmp/test-results
|
60
|
+
destination: test-results
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gh-events (0.
|
4
|
+
gh-events (0.8.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -21,6 +21,8 @@ GEM
|
|
21
21
|
diff-lcs (>= 1.2.0, < 2.0)
|
22
22
|
rspec-support (~> 3.9.0)
|
23
23
|
rspec-support (3.9.0)
|
24
|
+
rspec_junit_formatter (0.4.1)
|
25
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
24
26
|
|
25
27
|
PLATFORMS
|
26
28
|
ruby
|
@@ -30,6 +32,7 @@ DEPENDENCIES
|
|
30
32
|
gh-events!
|
31
33
|
rake (~> 10.0)
|
32
34
|
rspec (~> 3.0)
|
35
|
+
rspec_junit_formatter (~> 0.4)
|
33
36
|
|
34
37
|
BUNDLED WITH
|
35
|
-
2.
|
38
|
+
2.1.4
|
data/LICENSE.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
Copyright 2020 Phil Hofmann
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
4
|
+
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,11 +1,31 @@
|
|
1
|
-
# Github
|
1
|
+
# Github Events
|
2
2
|
|
3
|
-
|
3
|
+
Via Webhooks Github can send a plethora of events, which can be used
|
4
|
+
to facilitate all kinds of automation.
|
5
|
+
|
6
|
+
These events are _untyped_, meaning they clearly lack a property
|
7
|
+
`type` to identify the type of event received. The rationale here
|
8
|
+
might be that one would have different webhook endpoints for each type
|
9
|
+
of events. But maintaining lots of endpoints is cumbersome. When all
|
10
|
+
the events end up in one endpoint, this library helps by adding a
|
11
|
+
property `type` to the event.
|
12
|
+
|
13
|
+
Additionally this library provides means of translating the plain
|
14
|
+
event (a deeply nested data structure serialized to JSON) into a human
|
15
|
+
readable textutal representation. Some functionality is wrapped in a
|
16
|
+
command line utilites, for your convenience.
|
4
17
|
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
18
|
|
7
19
|
## Installation
|
8
20
|
|
21
|
+
### To use the command line utilities
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
$ gem install gh-events
|
26
|
+
|
27
|
+
### To use as a library in your own project
|
28
|
+
|
9
29
|
Add this line to your application's Gemfile:
|
10
30
|
|
11
31
|
```ruby
|
@@ -16,13 +36,58 @@ And then execute:
|
|
16
36
|
|
17
37
|
$ bundle
|
18
38
|
|
19
|
-
Or install it yourself as:
|
20
|
-
|
21
|
-
$ gem install gh-events
|
22
39
|
|
23
40
|
## Usage
|
24
41
|
|
25
|
-
|
42
|
+
### CLI Util
|
43
|
+
|
44
|
+
#### Typing
|
45
|
+
|
46
|
+
You can use the command `gh-events` to list the types of events
|
47
|
+
stored in JSON files.
|
48
|
+
|
49
|
+
```
|
50
|
+
% gh-events spec/fixtures/*.json
|
51
|
+
events/001.json: commit_comment
|
52
|
+
events/002.json: create
|
53
|
+
events/003.json: delete
|
54
|
+
events/004.json: deployment
|
55
|
+
events/005.json: deployment_status
|
56
|
+
events/006.json: fork
|
57
|
+
...
|
58
|
+
```
|
59
|
+
|
60
|
+
#### Translating
|
61
|
+
|
62
|
+
The `gh-event2text` util will receive one event via stdin. Let's say
|
63
|
+
you have a github _commit_comment_ event stored in a file named
|
64
|
+
`event.json`. With you can to this:
|
65
|
+
|
66
|
+
```
|
67
|
+
% cat event.json | gh-event2text
|
68
|
+
"[Codertocat/Hello-World] Codertocat commented on commit `6113728f27ae82c7b1a177c8d03f9e96e0adf246`>: \"This is a really good change! :+1:\""
|
69
|
+
```
|
70
|
+
|
71
|
+
For translating the event into its textual representation
|
72
|
+
`gh-event2text` uses a dictionary. The dictionary can be given as an
|
73
|
+
argument to `gh-event2text`, which can either be a name of a packaged
|
74
|
+
dict (currently `plain` (default) or `slack`) or a path to a
|
75
|
+
dictionary file.
|
76
|
+
|
77
|
+
Dictionary files are YAML files with ERB for templating. The playload
|
78
|
+
is fed to the templates as nested Ruby OpenStructs. For an elaborate
|
79
|
+
example have a look at the dictionary for Slack.
|
80
|
+
|
81
|
+
If you write your own dictionary for other target systems, please
|
82
|
+
consider to contribute.
|
83
|
+
|
84
|
+
TODO: elaborate on how the lookup of types works
|
85
|
+
|
86
|
+
|
87
|
+
### Library
|
88
|
+
|
89
|
+
TODO: add an example
|
90
|
+
|
26
91
|
|
27
92
|
## References
|
28
93
|
|
data/exe/gh-events
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
lib = File.expand_path("../../lib", __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'gh/events'
|
7
|
+
|
8
|
+
ARGV.each do |file|
|
9
|
+
begin
|
10
|
+
type = GH::Events.typeof(File.read(file))
|
11
|
+
rescue
|
12
|
+
type = 'error'
|
13
|
+
end
|
14
|
+
puts "#{file}: #{type}"
|
15
|
+
end
|
data/gh-events.gemspec
CHANGED
@@ -38,4 +38,5 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_development_dependency "bundler", "~> 2.0"
|
39
39
|
spec.add_development_dependency "rake", "~> 10.0"
|
40
40
|
spec.add_development_dependency "rspec", "~> 3.0"
|
41
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.4"
|
41
42
|
end
|
data/lib/gh/events.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "gh/events/version"
|
2
|
-
require "gh/events/
|
2
|
+
require "gh/events/text"
|
3
|
+
require 'hash'
|
3
4
|
|
4
5
|
require 'yaml'
|
5
6
|
require 'ostruct'
|
@@ -14,8 +15,10 @@ module GH
|
|
14
15
|
HEURISTICS = YAML.load_file(PATH)
|
15
16
|
|
16
17
|
def typeof(payload)
|
18
|
+
payload = JSON.parse(payload) if payload.is_a?(String)
|
17
19
|
payload = payload.marshal_dump if payload.is_a?(OpenStruct)
|
18
|
-
|
20
|
+
payload = payload.deep_stringify_keys
|
21
|
+
keys = payload.keys
|
19
22
|
HEURISTICS.each do |type, characteristics|
|
20
23
|
# puts ("-" * 30) + " #{type}"
|
21
24
|
|
@@ -3,15 +3,19 @@ require 'erb'
|
|
3
3
|
require 'ostruct'
|
4
4
|
require 'json'
|
5
5
|
|
6
|
-
module GH::Events::
|
6
|
+
module GH::Events::Text
|
7
7
|
|
8
8
|
extend self
|
9
9
|
|
10
10
|
# this is a carefully curated list of fields in gh events that might
|
11
11
|
# be helpful when filtering events
|
12
|
-
ASPECTS = %i[type action state
|
12
|
+
ASPECTS = %i[type action state]
|
13
|
+
|
14
|
+
def translate(payload, dict)
|
15
|
+
dict ||= 'plain'
|
16
|
+
|
17
|
+
templates = YAML.load_file(templates_file(dict))
|
13
18
|
|
14
|
-
def translate(payload)
|
15
19
|
event = JSON.parse(payload, object_class: OpenStruct)
|
16
20
|
type = GH::Events.typeof(event).to_s
|
17
21
|
|
@@ -38,20 +42,22 @@ module GH::Events::Slack
|
|
38
42
|
template = _result[:ts].compact.last
|
39
43
|
|
40
44
|
# if the event was set to `false` abort
|
41
|
-
|
45
|
+
return nil if template === false
|
42
46
|
|
43
47
|
# if there is no template use a default
|
44
48
|
template ||= templates['no_template']
|
45
49
|
|
46
|
-
render(template, event)
|
50
|
+
render(template, event).gsub(/[\n\r]+/, '\n')
|
47
51
|
end
|
48
52
|
|
49
|
-
def templates_file
|
50
|
-
File.expand_path(File.join(%w(.. .. .. .. res
|
51
|
-
|
53
|
+
def templates_file(dict)
|
54
|
+
preset = File.expand_path(File.join(%w(.. .. .. .. res) << "#{dict}.yml"), __FILE__)
|
55
|
+
return preset if File.exists?(preset)
|
56
|
+
|
57
|
+
return dict if File.exists?(dict.to_s)
|
52
58
|
|
53
|
-
|
54
|
-
|
59
|
+
warn "Could not find dict file: #{dict}"
|
60
|
+
exit(1)
|
55
61
|
end
|
56
62
|
|
57
63
|
class ErbBinding < OpenStruct
|
data/lib/gh/events/version.rb
CHANGED
data/lib/hash.rb
ADDED
data/res/events.yml
CHANGED
data/res/plain.yml
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
# All refs are unified. So all events have `ref` and `ref_type`.
|
2
|
+
# Additionally all events have `type` and `stype`.
|
3
|
+
|
4
|
+
push: >-
|
5
|
+
[<%= repository.full_name %>]
|
6
|
+
<%= sender.login %> <%= forced ? 'force-' : '' %>pushed
|
7
|
+
<% if ref_type == 'branch' %><%= num = size || commits.count %> commit<%= num > 1 ? 's' : '' %> to<% end %>
|
8
|
+
<%= ref_type %> `<%= ref %>`
|
9
|
+
|
10
|
+
commit_comment: >-
|
11
|
+
[<%= repository.full_name %>]
|
12
|
+
<%= sender.login %>
|
13
|
+
commented on
|
14
|
+
commit `<%= comment.commit_id %>`>: "<%= comment.body %>"
|
15
|
+
|
16
|
+
create: >-
|
17
|
+
[<%= repository.full_name %>]
|
18
|
+
<%= sender.login %>
|
19
|
+
created
|
20
|
+
<%= ref_type %> `<%= ref %>`
|
21
|
+
|
22
|
+
delete: >-
|
23
|
+
[<%= repository.full_name %>]
|
24
|
+
<%= sender.login %>
|
25
|
+
deleted
|
26
|
+
<%= ref_type %> `<%= ref %>`
|
27
|
+
|
28
|
+
issue_comment: >-
|
29
|
+
[<%= repository.full_name %>]
|
30
|
+
<%= sender.login %>
|
31
|
+
commented
|
32
|
+
on issue "<%= issue.title %>": <%= comment.body %>
|
33
|
+
|
34
|
+
issues: >-
|
35
|
+
[<%= repository.full_name %>]
|
36
|
+
<%= sender.login %>
|
37
|
+
<%= action %>
|
38
|
+
issue "<%= issue.title %>"
|
39
|
+
|
40
|
+
issues.opened: >-
|
41
|
+
[<%= repository.full_name %>]
|
42
|
+
<%= sender.login %>
|
43
|
+
create the issue
|
44
|
+
"<%= issue.title %>": <%= repository.html_url %>
|
45
|
+
|
46
|
+
issues.labeled: >-
|
47
|
+
[<%= repository.full_name %>]
|
48
|
+
<%= sender.login %>
|
49
|
+
labeled
|
50
|
+
issue "<%= issue.title %>"
|
51
|
+
as `<%= label.name %>`
|
52
|
+
|
53
|
+
pull_request: >-
|
54
|
+
[<%= repository.full_name %>]
|
55
|
+
<%= sender.login %>
|
56
|
+
<%= action %>
|
57
|
+
PR "<%= pull_request.title %>"
|
58
|
+
|
59
|
+
pull_request.opened: >-
|
60
|
+
[<%= repository.full_name %>]
|
61
|
+
<%= sender.login %>
|
62
|
+
opened
|
63
|
+
PR <%= pull_request.title %>: <%= pull_request.body %>
|
64
|
+
|
65
|
+
pull_request.labeled: >-
|
66
|
+
[<%= repository.full_name %>]
|
67
|
+
<%= sender.login %>
|
68
|
+
labeled
|
69
|
+
PR "<%= pull_request.title %>"
|
70
|
+
as `<%= label.name %>`
|
71
|
+
|
72
|
+
pull_request_review_comment: >-
|
73
|
+
[<%= repository.full_name %>]
|
74
|
+
<%= sender.login %>
|
75
|
+
reviewed: <%= comment.body %>
|
76
|
+
|
77
|
+
star: >-
|
78
|
+
[<%= repository.full_name %>]
|
79
|
+
<%= sender.login %>
|
80
|
+
<%= action == 'created' ? 'starred' : 'unstarred' %>
|
81
|
+
<%= repository.full_name %>
|
82
|
+
(<%= repository.stargazers_count %>)
|
83
|
+
|
84
|
+
# Ignore other status udpates than CircleCI failures for the moment
|
85
|
+
status: false
|
86
|
+
|
87
|
+
status.failure: >-
|
88
|
+
[<%= repository.full_name %>]
|
89
|
+
CircleCI build failed
|
90
|
+
for commit "<%= commit.commit.message %>"
|
91
|
+
by "<%= sender.login %>"
|
92
|
+
|
93
|
+
fork: >-
|
94
|
+
[<%= repository.full_name %>]
|
95
|
+
<%= sender.login %>
|
96
|
+
forked <%= repository.full_name %>
|
97
|
+
(<%= repository.forks_count %>)
|
98
|
+
|
99
|
+
deployment: An event of type `deployment` occurred.
|
100
|
+
deployment_status: An event of type `deployment_status` occurred.
|
101
|
+
gollum: An event of type `gollum` occurred.
|
102
|
+
member: An event of type `member` occurred.
|
103
|
+
membership: An event of type `membership` occurred.
|
104
|
+
page_build: An event of type `page_build` occurred.
|
105
|
+
public: An event of type `public` occurred.
|
106
|
+
release: An event of type `release` occurred.
|
107
|
+
repository: An event of type `repository` occurred.
|
108
|
+
team_add: An event of type `team_add` occurred.
|
109
|
+
|
110
|
+
# `false` will make it end with exit code 1
|
111
|
+
watch: false
|
112
|
+
|
113
|
+
# `no_template` will be used for recognized events which have no
|
114
|
+
# template assigned.
|
115
|
+
no_template: No template for event of type `<%= type %>` (`<%= stype %>`).
|
116
|
+
|
117
|
+
# `unknown` will be used for events that could not be recognized.
|
118
|
+
unknown: "An unknown event occurred (stype: `<%= stype %>`)"
|
data/res/slack.yml
CHANGED
@@ -57,7 +57,7 @@ issue_comment:
|
|
57
57
|
:left_speech_bubble:
|
58
58
|
<<%= sender.html_url %>|<%= sender.login %>>
|
59
59
|
commented
|
60
|
-
on <<%= comment.html_url %>|<%= issue.title
|
60
|
+
on <<%= comment.html_url %>|<%= issue.title %>>
|
61
61
|
attachments:
|
62
62
|
- fallback: <%= comment.body %>
|
63
63
|
color: '#36a64f'
|
@@ -74,6 +74,15 @@ issues:
|
|
74
74
|
issue <<%= issue.html_url %>|<%= issue.title %>>
|
75
75
|
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
76
76
|
|
77
|
+
issues.assigned:
|
78
|
+
text: >-
|
79
|
+
:inbox_tray:
|
80
|
+
<<%= sender.html_url %>|<%= sender.login %>>
|
81
|
+
<%= action %>
|
82
|
+
issue <<%= issue.html_url %>|<%= issue.title %>>
|
83
|
+
on <<%= repository.html_url %>|<%= repository.full_name %>>
|
84
|
+
to [TODO whom]
|
85
|
+
|
77
86
|
issues.opened:
|
78
87
|
text: >-
|
79
88
|
:inbox_tray:
|
@@ -150,22 +159,22 @@ star:
|
|
150
159
|
:star: <%= repository.stargazers_count %>
|
151
160
|
|
152
161
|
# Ignore other status udpates than CircleCI failures for the moment
|
153
|
-
status:
|
162
|
+
status: false
|
163
|
+
|
164
|
+
status.failure:
|
154
165
|
text: >-
|
155
|
-
<% if context.match(/circleci/) and state == 'failure' %>
|
156
|
-
[`<%= stype %>`]
|
157
166
|
<<%= target_url %> | CircleCI build >
|
158
167
|
fails for commit
|
159
168
|
<<%= commit.html_url %> | <%= commit.commit.message %>>
|
160
169
|
from
|
161
170
|
<<%= sender.html_url %>|<%= sender.login %>>
|
162
|
-
<% end %>
|
163
171
|
|
164
172
|
fork:
|
165
173
|
text: >-
|
166
174
|
:fork_and_knife:
|
167
175
|
<<%= sender.html_url %>|<%= sender.login %>>
|
168
176
|
forked <<%= repository.html_url %>|<%= repository.full_name %>>
|
177
|
+
:fork_and_knife: <%= repository.forks_count %>
|
169
178
|
|
170
179
|
deployment:
|
171
180
|
text: An event of type `deployment` occurred.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gh-events
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phil Hofmann
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,30 +52,50 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec_junit_formatter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.4'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.4'
|
55
69
|
description: Determine Github event types by their payload.
|
56
70
|
email:
|
57
71
|
- phil@200ok.ch
|
58
72
|
executables:
|
59
|
-
- gh-
|
73
|
+
- gh-event2text
|
74
|
+
- gh-events
|
60
75
|
extensions: []
|
61
76
|
extra_rdoc_files: []
|
62
77
|
files:
|
78
|
+
- ".circleci/config.yml"
|
63
79
|
- ".gitignore"
|
64
80
|
- ".rspec"
|
65
81
|
- ".ruby-version"
|
66
82
|
- Gemfile
|
67
83
|
- Gemfile.lock
|
84
|
+
- LICENSE.md
|
68
85
|
- README.md
|
69
86
|
- Rakefile
|
70
87
|
- bin/console
|
71
88
|
- bin/setup
|
72
|
-
- exe/gh-
|
89
|
+
- exe/gh-event2text
|
90
|
+
- exe/gh-events
|
73
91
|
- gh-events.gemspec
|
74
92
|
- lib/gh-events.rb
|
75
93
|
- lib/gh/events.rb
|
76
|
-
- lib/gh/events/
|
94
|
+
- lib/gh/events/text.rb
|
77
95
|
- lib/gh/events/version.rb
|
96
|
+
- lib/hash.rb
|
78
97
|
- res/events.yml
|
98
|
+
- res/plain.yml
|
79
99
|
- res/slack.yml
|
80
100
|
homepage: https://github.com/200ok-ch/gh-events
|
81
101
|
licenses: []
|