rodbot 0.6.0 → 0.6.2
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/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +1 -1
- data/.gitignore +3 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +13 -0
- data/README.md +9 -0
- data/checksums/rodbot-0.6.1.gem.sha512 +1 -0
- data/checksums/rodbot-0.6.2.gem.sha512 +1 -0
- data/gems.rb +8 -1
- data/guardfile.rb +11 -2
- data/lib/rodbot/plugins/forgejo_webhook/README.forgejo_webhook.md +66 -0
- data/lib/rodbot/plugins/forgejo_webhook/app.rb +51 -0
- data/lib/rodbot/plugins/github_webhook/README.github_webhook.md +1 -1
- data/lib/rodbot/plugins/github_webhook/app.rb +1 -1
- data/lib/rodbot/plugins/gitlab_webhook/README.gitlab_webhook.md +2 -0
- data/lib/rodbot/simulator.rb +1 -1
- data/lib/rodbot/version.rb +1 -1
- data/rakefile.rb +3 -4
- data/rodbot.gemspec +24 -27
- metadata +48 -93
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c8bd0137ab153652282f606f43f480f0b55a9c26850e22d5da88573dee04e3ca
|
|
4
|
+
data.tar.gz: 3cc646808dc44d5664af269605e21c70c800ad327e99e51ec32c31960df5038d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5dad66611604a666014fd68cee15d2189ee509432121c1037866fc5d7f97dc7411510d492f231a76825df930d1f66a5b6ceacbbf7a2f019b6d34d743f9810cf0
|
|
7
|
+
data.tar.gz: 64bae55f1b265a92b3a3e2b2c69e2836096eef0da104faa1b9ca048f1235dc8b0d14dfdc0e866e4ea2c20e3d701a8a4a1e2f9d2fa8ed291c8aa4543a7702264e
|
data/.github/workflows/test.yml
CHANGED
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Nothing so far
|
|
4
4
|
|
|
5
|
+
## 0.6.2
|
|
6
|
+
|
|
7
|
+
### Improvements
|
|
8
|
+
* Enforce MFA for future gem releases
|
|
9
|
+
|
|
10
|
+
### Additions
|
|
11
|
+
* Add built-in plugins for Forgejo (Codeberg)
|
|
12
|
+
|
|
13
|
+
## 0.6.1
|
|
14
|
+
|
|
15
|
+
### Changes
|
|
16
|
+
* Update Ruby to 4.0
|
|
17
|
+
|
|
5
18
|
## 0.6.0
|
|
6
19
|
|
|
7
20
|
### Changes
|
data/README.md
CHANGED
|
@@ -477,6 +477,7 @@ Name | Dependencies | Description
|
|
|
477
477
|
[:matrix](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/matrix/README.matrix.md) | yes | relay service for the [Matrix communication network](https://matrix.org)
|
|
478
478
|
[:slack](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/slack/README.slack.md) | yes | relay service for the [Slack communication network](https://slack.com)
|
|
479
479
|
[:otp](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/otp/README.otp.md) | yes | guard commands with one-time passwords
|
|
480
|
+
[:forgejo_webhook](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/forgejo_webhook/README.forgejo_webhook.md) | no | event announcements from [Forgejo](https://forgejo.org)
|
|
480
481
|
[:gitlab_webhook](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/gitlab_webhook/README.gitlab_webhook.md) | no | event announcements from [GitLab](https://gitlab.com)
|
|
481
482
|
[:github_webhook](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/github_webhook/README.github_webhook.md) | no | event announcements from [GitHub](https://github.com)
|
|
482
483
|
[:hal](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/hal/README.hal.md) | no | feel like Dave (demo)
|
|
@@ -657,6 +658,14 @@ To install the development dependencies and then run the test suite:
|
|
|
657
658
|
```
|
|
658
659
|
bundle install
|
|
659
660
|
bundle exec rake # run tests once
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
Some development tools such as `guard` are optional and can be added as follows:
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
bundle config set --local with toolbox
|
|
667
|
+
bundle install
|
|
668
|
+
|
|
660
669
|
bundle exec guard # run tests whenever files are modified
|
|
661
670
|
```
|
|
662
671
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
cdae3f66873d78a36ed13f6a2ddda6a8d2221b0f3aaea7c8c2584f94f7fcc1173f1042e404757a161bfd0bbd0d1e8cf8a80890aff77791b795c913d494323192
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4676d3004bdbf52c41319a842cac3a196561dab9fbf9a409a735dda1f55271cc88ad227a1d1b79ef3ac43ac57470a82fda9c892feb215144123937efe5402846
|
data/gems.rb
CHANGED
data/guardfile.rb
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
clearing :on
|
|
4
|
+
scope group: "spec"
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
def watches
|
|
6
7
|
watch(%r{^spec/(.+)_spec\.rb})
|
|
7
|
-
watch(%r{^lib/(.+)\.rb}) { "spec/lib/#{
|
|
8
|
+
watch(%r{^lib/(.+)\.rb}) { "spec/lib/#{it[1]}_spec.rb" }
|
|
8
9
|
watch(%r{shared_specs\.rb}) { 'spec' }
|
|
9
10
|
watch(%r{^spec/spec_helper\.rb}) { 'spec' }
|
|
10
11
|
end
|
|
12
|
+
|
|
13
|
+
group :spec do
|
|
14
|
+
guard(:minitest, bundler: true) { watches }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
group :fu do
|
|
18
|
+
guard(:minitest, bundler: true, cli: "-i/FU/") { watches }
|
|
19
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Rodbot plugin – Forgejo webhook
|
|
2
|
+
|
|
3
|
+
Pipeline event announcements from self-hosted [Forgejo](https://forgejo.org) or managed services like [Codeberg](https://codeberg.org)
|
|
4
|
+
|
|
5
|
+
## Preparation
|
|
6
|
+
|
|
7
|
+
The Rodbot app binds to `localhost` by default which cannot be reached from Forgejo. Make sure this connection is possible by setting a different IP in `config/rodbot.rb`:
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
app do
|
|
11
|
+
host '0.0.0.0'
|
|
12
|
+
end
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
To authenticate the webhook calls from Forgejo, create a new random secret token:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
ruby -r securerandom -e "puts SecureRandom.alphanumeric(20)"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Configure this plugin in `config/rodbot.rb`:
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
plugin :forgejo_webhook do
|
|
25
|
+
secret_tokens '<TOKEN>'
|
|
26
|
+
end
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
You can set any number of secure tokens here separated with colons.
|
|
30
|
+
|
|
31
|
+
## Activation
|
|
32
|
+
|
|
33
|
+
Add a webhook to every Forgejo repository you'd like to see pipeline event announcements for. Go to `https://codeberg.org/<USER>/<REPO>/settings/hooks/forgejo/new" and create a new webhook with the following properties:
|
|
34
|
+
|
|
35
|
+
* Target URL: `https://<RODBOT-APP>/forgejo_webhook`
|
|
36
|
+
* HTTP method: `POST`
|
|
37
|
+
* POST content type: `application/json`
|
|
38
|
+
* Secret: `<TOKEN>`
|
|
39
|
+
* Trigger on: (o) Custom events...
|
|
40
|
+
* [x] Failure
|
|
41
|
+
* [x] Success
|
|
42
|
+
* Branch filter: `*`
|
|
43
|
+
* Authorization header: *empty*
|
|
44
|
+
* [x] Active
|
|
45
|
+
|
|
46
|
+
Use the test tool to verify your setup and to see what the JSON payloads look like in case you'd like to customize the handler.
|
|
47
|
+
|
|
48
|
+
## Customization
|
|
49
|
+
|
|
50
|
+
You can change how the plugin reacts to which webhook requests by configuring a custom handler proc. Here's the default one:
|
|
51
|
+
|
|
52
|
+
```ruby
|
|
53
|
+
plugin :forgejo_webhook do
|
|
54
|
+
handler ->(request) do
|
|
55
|
+
json = JSON.parse(request.body.read)
|
|
56
|
+
project = json.dig('run', 'repository', 'full_name')
|
|
57
|
+
status = json.dig('run', 'status')
|
|
58
|
+
emoji = case status
|
|
59
|
+
when 'success' then '🟢'
|
|
60
|
+
when 'failure' then '🔴'
|
|
61
|
+
else '⚪️'
|
|
62
|
+
end
|
|
63
|
+
[emoji, project, status.gsub('_', ' ')].join(' ')
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rodbot
|
|
4
|
+
class Plugins
|
|
5
|
+
class ForgejoWebhook
|
|
6
|
+
module App
|
|
7
|
+
|
|
8
|
+
class Routes < ::App
|
|
9
|
+
DEFAULT_HANDLER = ->(request) do
|
|
10
|
+
json = JSON.parse(request.body.read)
|
|
11
|
+
project = json.dig('run', 'repository', 'full_name')
|
|
12
|
+
status = json.dig('run', 'status')
|
|
13
|
+
emoji = case status
|
|
14
|
+
when 'success' then '🟢'
|
|
15
|
+
when 'failure' then '🔴'
|
|
16
|
+
else '⚪️'
|
|
17
|
+
end
|
|
18
|
+
[emoji, project, status.gsub('_', ' ')].join(' ')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
route do |r|
|
|
22
|
+
r.post '' do
|
|
23
|
+
r.halt 401 unless authorized?
|
|
24
|
+
handler = Rodbot.config(:plugin, :forgejo_webhook, :handler) || DEFAULT_HANDLER
|
|
25
|
+
message = handler.call(r)
|
|
26
|
+
if message&.empty?
|
|
27
|
+
r.halt 204
|
|
28
|
+
else
|
|
29
|
+
Rodbot.say message
|
|
30
|
+
r.halt 200
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
rescue => error
|
|
34
|
+
r.halt 500, error.message
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def authorized?
|
|
40
|
+
Rodbot.config(:plugin, :forgejo_webhook, :secret_tokens).to_s.split(':').any? do |secret|
|
|
41
|
+
signature = OpenSSL::HMAC.hexdigest('sha256', secret, request.body.read)
|
|
42
|
+
request.body.rewind
|
|
43
|
+
::Rack::Utils.secure_compare(signature, request.env['HTTP_X_FORGEJO_SIGNATURE'])
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -43,7 +43,7 @@ module Rodbot
|
|
|
43
43
|
|
|
44
44
|
def authorized?
|
|
45
45
|
Rodbot.config(:plugin, :github_webhook, :secret_tokens).to_s.split(':').any? do |secret|
|
|
46
|
-
signature = 'sha256=' + OpenSSL::HMAC.hexdigest(
|
|
46
|
+
signature = 'sha256=' + OpenSSL::HMAC.hexdigest('sha256', secret, request.body.read)
|
|
47
47
|
request.body.rewind
|
|
48
48
|
::Rack::Utils.secure_compare(signature, request.env['HTTP_X_HUB_SIGNATURE_256'])
|
|
49
49
|
end
|
data/lib/rodbot/simulator.rb
CHANGED
data/lib/rodbot/version.rb
CHANGED
data/rakefile.rb
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
#
|
|
3
3
|
require 'bundler/gem_tasks'
|
|
4
4
|
|
|
5
|
-
require '
|
|
5
|
+
require 'minitest/test_task'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
t.
|
|
9
|
-
t.test_files = FileList['spec/lib/**/*_spec.rb']
|
|
7
|
+
Minitest::TestTask.create(:test) do |t|
|
|
8
|
+
t.test_globs = ["spec/**/*_spec.rb"]
|
|
10
9
|
t.verbose = false
|
|
11
10
|
t.warning = !ENV['RUBYOPT']&.match?(/-W0/)
|
|
12
11
|
end
|
data/rodbot.gemspec
CHANGED
|
@@ -20,7 +20,8 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
'changelog_uri' => 'https://github.com/svoop/rodbot/blob/main/CHANGELOG.md',
|
|
21
21
|
'source_code_uri' => 'https://github.com/svoop/rodbot',
|
|
22
22
|
'documentation_uri' => 'https://www.rubydoc.info/gems/rodbot',
|
|
23
|
-
'bug_tracker_uri' => 'https://github.com/svoop/rodbot/issues'
|
|
23
|
+
'bug_tracker_uri' => 'https://github.com/svoop/rodbot/issues',
|
|
24
|
+
'rubygems_mfa_required' => 'true'
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
@@ -41,23 +42,28 @@ Gem::Specification.new do |spec|
|
|
|
41
42
|
|
|
42
43
|
spec.required_ruby_version = '>= 3.0.0'
|
|
43
44
|
|
|
44
|
-
spec.
|
|
45
|
-
spec.
|
|
46
|
-
spec.
|
|
47
|
-
spec.
|
|
48
|
-
spec.
|
|
49
|
-
spec.
|
|
50
|
-
spec.
|
|
51
|
-
spec.
|
|
52
|
-
spec.
|
|
53
|
-
spec.
|
|
54
|
-
spec.
|
|
55
|
-
spec.
|
|
56
|
-
spec.
|
|
57
|
-
spec.
|
|
58
|
-
spec.
|
|
59
|
-
spec.
|
|
60
|
-
spec.
|
|
45
|
+
spec.add_dependency 'zeitwerk', '~> 2'
|
|
46
|
+
spec.add_dependency 'ostruct'
|
|
47
|
+
spec.add_dependency 'fiddle'
|
|
48
|
+
spec.add_dependency 'logger'
|
|
49
|
+
spec.add_dependency 'dry-cli', '~> 1', '<1.4.0' # TODO: broken on 1.4 - see https://github.com/dry-rb/dry-cli/issues/126
|
|
50
|
+
spec.add_dependency 'dry-credentials', '~> 0'
|
|
51
|
+
spec.add_dependency 'tty-markdown', '~> 0'
|
|
52
|
+
spec.add_dependency 'pastel', '~> 0'
|
|
53
|
+
spec.add_dependency 'httpx', '~> 1'
|
|
54
|
+
spec.add_dependency 'puma', '~> 6', '>= 6.2'
|
|
55
|
+
spec.add_dependency 'roda', '~> 3'
|
|
56
|
+
spec.add_dependency 'tilt', '~> 2'
|
|
57
|
+
spec.add_dependency 'kramdown', '~> 2'
|
|
58
|
+
spec.add_dependency 'kramdown-parser-gfm', '~> 1'
|
|
59
|
+
spec.add_dependency 'clockwork', '~> 3'
|
|
60
|
+
spec.add_dependency 'sucker_punch', '~> 3'
|
|
61
|
+
spec.add_dependency 'debug'
|
|
62
|
+
|
|
63
|
+
spec.add_development_dependency 'rake'
|
|
64
|
+
spec.add_development_dependency 'minitest'
|
|
65
|
+
spec.add_development_dependency 'minitest-mock'
|
|
66
|
+
spec.add_development_dependency 'minitest-substitute', '>= 1.2.0'
|
|
61
67
|
|
|
62
68
|
# Sync versions with lib/templates/new/gems.rb
|
|
63
69
|
spec.add_development_dependency 'redis', '~> 5'
|
|
@@ -65,13 +71,4 @@ Gem::Specification.new do |spec|
|
|
|
65
71
|
spec.add_development_dependency 'matrix_sdk', '~> 2'
|
|
66
72
|
spec.add_development_dependency 'slack-ruby-client', '~> 2'
|
|
67
73
|
spec.add_development_dependency 'async-websocket', '~> 0.8.0' # see https://github.com/slack-ruby/slack-ruby-client/blob/720b75fe7eda964e3da61bf442532baa66c2927c/lib/slack/real_time/concurrency/async.rb#L137
|
|
68
|
-
|
|
69
|
-
spec.add_development_dependency 'rake'
|
|
70
|
-
spec.add_development_dependency 'minitest'
|
|
71
|
-
spec.add_development_dependency 'minitest-flash'
|
|
72
|
-
spec.add_development_dependency 'minitest-focus'
|
|
73
|
-
spec.add_development_dependency 'minitest-substitute'
|
|
74
|
-
spec.add_development_dependency 'guard'
|
|
75
|
-
spec.add_development_dependency 'guard-minitest'
|
|
76
|
-
spec.add_development_dependency 'yard'
|
|
77
74
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rodbot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sven Schwyn
|
|
@@ -72,6 +72,9 @@ dependencies:
|
|
|
72
72
|
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
74
|
version: '1'
|
|
75
|
+
- - "<"
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: 1.4.0
|
|
75
78
|
type: :runtime
|
|
76
79
|
prerelease: false
|
|
77
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -79,6 +82,9 @@ dependencies:
|
|
|
79
82
|
- - "~>"
|
|
80
83
|
- !ruby/object:Gem::Version
|
|
81
84
|
version: '1'
|
|
85
|
+
- - "<"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: 1.4.0
|
|
82
88
|
- !ruby/object:Gem::Dependency
|
|
83
89
|
name: dry-credentials
|
|
84
90
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -254,77 +260,21 @@ dependencies:
|
|
|
254
260
|
- !ruby/object:Gem::Version
|
|
255
261
|
version: '0'
|
|
256
262
|
- !ruby/object:Gem::Dependency
|
|
257
|
-
name:
|
|
258
|
-
requirement: !ruby/object:Gem::Requirement
|
|
259
|
-
requirements:
|
|
260
|
-
- - "~>"
|
|
261
|
-
- !ruby/object:Gem::Version
|
|
262
|
-
version: '5'
|
|
263
|
-
type: :development
|
|
264
|
-
prerelease: false
|
|
265
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
266
|
-
requirements:
|
|
267
|
-
- - "~>"
|
|
268
|
-
- !ruby/object:Gem::Version
|
|
269
|
-
version: '5'
|
|
270
|
-
- !ruby/object:Gem::Dependency
|
|
271
|
-
name: rotp
|
|
272
|
-
requirement: !ruby/object:Gem::Requirement
|
|
273
|
-
requirements:
|
|
274
|
-
- - "~>"
|
|
275
|
-
- !ruby/object:Gem::Version
|
|
276
|
-
version: '6'
|
|
277
|
-
type: :development
|
|
278
|
-
prerelease: false
|
|
279
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
280
|
-
requirements:
|
|
281
|
-
- - "~>"
|
|
282
|
-
- !ruby/object:Gem::Version
|
|
283
|
-
version: '6'
|
|
284
|
-
- !ruby/object:Gem::Dependency
|
|
285
|
-
name: matrix_sdk
|
|
286
|
-
requirement: !ruby/object:Gem::Requirement
|
|
287
|
-
requirements:
|
|
288
|
-
- - "~>"
|
|
289
|
-
- !ruby/object:Gem::Version
|
|
290
|
-
version: '2'
|
|
291
|
-
type: :development
|
|
292
|
-
prerelease: false
|
|
293
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
294
|
-
requirements:
|
|
295
|
-
- - "~>"
|
|
296
|
-
- !ruby/object:Gem::Version
|
|
297
|
-
version: '2'
|
|
298
|
-
- !ruby/object:Gem::Dependency
|
|
299
|
-
name: slack-ruby-client
|
|
300
|
-
requirement: !ruby/object:Gem::Requirement
|
|
301
|
-
requirements:
|
|
302
|
-
- - "~>"
|
|
303
|
-
- !ruby/object:Gem::Version
|
|
304
|
-
version: '2'
|
|
305
|
-
type: :development
|
|
306
|
-
prerelease: false
|
|
307
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
308
|
-
requirements:
|
|
309
|
-
- - "~>"
|
|
310
|
-
- !ruby/object:Gem::Version
|
|
311
|
-
version: '2'
|
|
312
|
-
- !ruby/object:Gem::Dependency
|
|
313
|
-
name: async-websocket
|
|
263
|
+
name: rake
|
|
314
264
|
requirement: !ruby/object:Gem::Requirement
|
|
315
265
|
requirements:
|
|
316
|
-
- - "
|
|
266
|
+
- - ">="
|
|
317
267
|
- !ruby/object:Gem::Version
|
|
318
|
-
version: 0
|
|
268
|
+
version: '0'
|
|
319
269
|
type: :development
|
|
320
270
|
prerelease: false
|
|
321
271
|
version_requirements: !ruby/object:Gem::Requirement
|
|
322
272
|
requirements:
|
|
323
|
-
- - "
|
|
273
|
+
- - ">="
|
|
324
274
|
- !ruby/object:Gem::Version
|
|
325
|
-
version: 0
|
|
275
|
+
version: '0'
|
|
326
276
|
- !ruby/object:Gem::Dependency
|
|
327
|
-
name:
|
|
277
|
+
name: minitest
|
|
328
278
|
requirement: !ruby/object:Gem::Requirement
|
|
329
279
|
requirements:
|
|
330
280
|
- - ">="
|
|
@@ -338,7 +288,7 @@ dependencies:
|
|
|
338
288
|
- !ruby/object:Gem::Version
|
|
339
289
|
version: '0'
|
|
340
290
|
- !ruby/object:Gem::Dependency
|
|
341
|
-
name: minitest
|
|
291
|
+
name: minitest-mock
|
|
342
292
|
requirement: !ruby/object:Gem::Requirement
|
|
343
293
|
requirements:
|
|
344
294
|
- - ">="
|
|
@@ -352,89 +302,89 @@ dependencies:
|
|
|
352
302
|
- !ruby/object:Gem::Version
|
|
353
303
|
version: '0'
|
|
354
304
|
- !ruby/object:Gem::Dependency
|
|
355
|
-
name: minitest-
|
|
305
|
+
name: minitest-substitute
|
|
356
306
|
requirement: !ruby/object:Gem::Requirement
|
|
357
307
|
requirements:
|
|
358
308
|
- - ">="
|
|
359
309
|
- !ruby/object:Gem::Version
|
|
360
|
-
version:
|
|
310
|
+
version: 1.2.0
|
|
361
311
|
type: :development
|
|
362
312
|
prerelease: false
|
|
363
313
|
version_requirements: !ruby/object:Gem::Requirement
|
|
364
314
|
requirements:
|
|
365
315
|
- - ">="
|
|
366
316
|
- !ruby/object:Gem::Version
|
|
367
|
-
version:
|
|
317
|
+
version: 1.2.0
|
|
368
318
|
- !ruby/object:Gem::Dependency
|
|
369
|
-
name:
|
|
319
|
+
name: redis
|
|
370
320
|
requirement: !ruby/object:Gem::Requirement
|
|
371
321
|
requirements:
|
|
372
|
-
- - "
|
|
322
|
+
- - "~>"
|
|
373
323
|
- !ruby/object:Gem::Version
|
|
374
|
-
version: '
|
|
324
|
+
version: '5'
|
|
375
325
|
type: :development
|
|
376
326
|
prerelease: false
|
|
377
327
|
version_requirements: !ruby/object:Gem::Requirement
|
|
378
328
|
requirements:
|
|
379
|
-
- - "
|
|
329
|
+
- - "~>"
|
|
380
330
|
- !ruby/object:Gem::Version
|
|
381
|
-
version: '
|
|
331
|
+
version: '5'
|
|
382
332
|
- !ruby/object:Gem::Dependency
|
|
383
|
-
name:
|
|
333
|
+
name: rotp
|
|
384
334
|
requirement: !ruby/object:Gem::Requirement
|
|
385
335
|
requirements:
|
|
386
|
-
- - "
|
|
336
|
+
- - "~>"
|
|
387
337
|
- !ruby/object:Gem::Version
|
|
388
|
-
version: '
|
|
338
|
+
version: '6'
|
|
389
339
|
type: :development
|
|
390
340
|
prerelease: false
|
|
391
341
|
version_requirements: !ruby/object:Gem::Requirement
|
|
392
342
|
requirements:
|
|
393
|
-
- - "
|
|
343
|
+
- - "~>"
|
|
394
344
|
- !ruby/object:Gem::Version
|
|
395
|
-
version: '
|
|
345
|
+
version: '6'
|
|
396
346
|
- !ruby/object:Gem::Dependency
|
|
397
|
-
name:
|
|
347
|
+
name: matrix_sdk
|
|
398
348
|
requirement: !ruby/object:Gem::Requirement
|
|
399
349
|
requirements:
|
|
400
|
-
- - "
|
|
350
|
+
- - "~>"
|
|
401
351
|
- !ruby/object:Gem::Version
|
|
402
|
-
version: '
|
|
352
|
+
version: '2'
|
|
403
353
|
type: :development
|
|
404
354
|
prerelease: false
|
|
405
355
|
version_requirements: !ruby/object:Gem::Requirement
|
|
406
356
|
requirements:
|
|
407
|
-
- - "
|
|
357
|
+
- - "~>"
|
|
408
358
|
- !ruby/object:Gem::Version
|
|
409
|
-
version: '
|
|
359
|
+
version: '2'
|
|
410
360
|
- !ruby/object:Gem::Dependency
|
|
411
|
-
name:
|
|
361
|
+
name: slack-ruby-client
|
|
412
362
|
requirement: !ruby/object:Gem::Requirement
|
|
413
363
|
requirements:
|
|
414
|
-
- - "
|
|
364
|
+
- - "~>"
|
|
415
365
|
- !ruby/object:Gem::Version
|
|
416
|
-
version: '
|
|
366
|
+
version: '2'
|
|
417
367
|
type: :development
|
|
418
368
|
prerelease: false
|
|
419
369
|
version_requirements: !ruby/object:Gem::Requirement
|
|
420
370
|
requirements:
|
|
421
|
-
- - "
|
|
371
|
+
- - "~>"
|
|
422
372
|
- !ruby/object:Gem::Version
|
|
423
|
-
version: '
|
|
373
|
+
version: '2'
|
|
424
374
|
- !ruby/object:Gem::Dependency
|
|
425
|
-
name:
|
|
375
|
+
name: async-websocket
|
|
426
376
|
requirement: !ruby/object:Gem::Requirement
|
|
427
377
|
requirements:
|
|
428
|
-
- - "
|
|
378
|
+
- - "~>"
|
|
429
379
|
- !ruby/object:Gem::Version
|
|
430
|
-
version:
|
|
380
|
+
version: 0.8.0
|
|
431
381
|
type: :development
|
|
432
382
|
prerelease: false
|
|
433
383
|
version_requirements: !ruby/object:Gem::Requirement
|
|
434
384
|
requirements:
|
|
435
|
-
- - "
|
|
385
|
+
- - "~>"
|
|
436
386
|
- !ruby/object:Gem::Version
|
|
437
|
-
version:
|
|
387
|
+
version: 0.8.0
|
|
438
388
|
description: |
|
|
439
389
|
Just the bare minimum of what's needed to create bi-directional chat bots
|
|
440
390
|
using Roda as backend, sucker_punch and Clockwork for async and timed jobs.
|
|
@@ -486,6 +436,8 @@ files:
|
|
|
486
436
|
- checksums/rodbot-0.5.1.gem.sha512
|
|
487
437
|
- checksums/rodbot-0.5.2.gem.sha512
|
|
488
438
|
- checksums/rodbot-0.6.0.gem.sha512
|
|
439
|
+
- checksums/rodbot-0.6.1.gem.sha512
|
|
440
|
+
- checksums/rodbot-0.6.2.gem.sha512
|
|
489
441
|
- doc/rodbot.afphoto
|
|
490
442
|
- doc/rodbot.avif
|
|
491
443
|
- exe/rodbot
|
|
@@ -518,6 +470,8 @@ files:
|
|
|
518
470
|
- lib/rodbot/memoize.rb
|
|
519
471
|
- lib/rodbot/message.rb
|
|
520
472
|
- lib/rodbot/plugins.rb
|
|
473
|
+
- lib/rodbot/plugins/forgejo_webhook/README.forgejo_webhook.md
|
|
474
|
+
- lib/rodbot/plugins/forgejo_webhook/app.rb
|
|
521
475
|
- lib/rodbot/plugins/github_webhook/README.github_webhook.md
|
|
522
476
|
- lib/rodbot/plugins/github_webhook/app.rb
|
|
523
477
|
- lib/rodbot/plugins/gitlab_webhook/README.gitlab_webhook.md
|
|
@@ -587,6 +541,7 @@ metadata:
|
|
|
587
541
|
source_code_uri: https://github.com/svoop/rodbot
|
|
588
542
|
documentation_uri: https://www.rubydoc.info/gems/rodbot
|
|
589
543
|
bug_tracker_uri: https://github.com/svoop/rodbot/issues
|
|
544
|
+
rubygems_mfa_required: 'true'
|
|
590
545
|
rdoc_options:
|
|
591
546
|
- "--title"
|
|
592
547
|
- Rodbot
|
|
@@ -608,7 +563,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
608
563
|
- !ruby/object:Gem::Version
|
|
609
564
|
version: '0'
|
|
610
565
|
requirements: []
|
|
611
|
-
rubygems_version:
|
|
566
|
+
rubygems_version: 4.0.6
|
|
612
567
|
specification_version: 4
|
|
613
568
|
summary: Minimalistic framework to build chat bots on top of a Roda backend
|
|
614
569
|
test_files: []
|