hephaestus 0.0.1

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.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +13 -0
  4. data/LICENSE.txt +9 -0
  5. data/README.md +19 -0
  6. data/bin/hephaestus +55 -0
  7. data/lib/hephaestus/actions/strip_comments_action.rb +263 -0
  8. data/lib/hephaestus/actions.rb +116 -0
  9. data/lib/hephaestus/app_builder.rb +168 -0
  10. data/lib/hephaestus/exit_on_failure.rb +22 -0
  11. data/lib/hephaestus/generators/app_generator.rb +158 -0
  12. data/lib/hephaestus/generators/base.rb +65 -0
  13. data/lib/hephaestus/generators/config_generator.rb +102 -0
  14. data/lib/hephaestus/generators/core_generator.rb +50 -0
  15. data/lib/hephaestus/generators/deployment_generator.rb +18 -0
  16. data/lib/hephaestus/generators/lib_generator.rb +16 -0
  17. data/lib/hephaestus/generators/license_generator.rb +16 -0
  18. data/lib/hephaestus/generators/rubocop_generator.rb +18 -0
  19. data/lib/hephaestus/generators/sorbet_generator.rb +16 -0
  20. data/lib/hephaestus/version.rb +11 -0
  21. data/lib/hephaestus.rb +21 -0
  22. data/templates/Gemfile.erb +121 -0
  23. data/templates/Procfile.debug +2 -0
  24. data/templates/Procfile.dev +2 -0
  25. data/templates/README.md.erb +1 -0
  26. data/templates/app/controllers/application_controller.rb +107 -0
  27. data/templates/app/controllers/concerns/authable.rb +32 -0
  28. data/templates/app/controllers/root_controller.rb +11 -0
  29. data/templates/app/controllers/settings_controller.rb +7 -0
  30. data/templates/app/controllers/staff_controller.rb +15 -0
  31. data/templates/app/controllers/yetto_controller.rb +30 -0
  32. data/templates/app/jobs/application_job.rb +10 -0
  33. data/templates/app/jobs/update_yetto_job.rb +27 -0
  34. data/templates/app/lib/body_parameter/yetto_parameters.rb +8 -0
  35. data/templates/app/lib/body_parameter.rb +6 -0
  36. data/templates/app/lib/constants/app.rb +8 -0
  37. data/templates/app/lib/headers/yetto.rb +17 -0
  38. data/templates/app/lib/headers.rb +5 -0
  39. data/templates/app/lib/path_parameter/yetto_parameters.rb +25 -0
  40. data/templates/app/lib/path_parameter.rb +8 -0
  41. data/templates/app/lib/plug_app/http.rb +34 -0
  42. data/templates/app/lib/plug_app/middleware/malformed_request.rb +110 -0
  43. data/templates/app/lib/plug_app/middleware/not_found.rb +41 -0
  44. data/templates/app/lib/plug_app/middleware/openapi_validation.rb +54 -0
  45. data/templates/app/lib/plug_app/middleware/tracing_attributes.rb +42 -0
  46. data/templates/app/lib/query_parameter.rb +6 -0
  47. data/templates/app/serializers/error_serializer.rb +16 -0
  48. data/templates/app/services/yetto_service.rb +61 -0
  49. data/templates/app/views/settings/index.json.jbuilder +15 -0
  50. data/templates/config/initializers/cors.rb +18 -0
  51. data/templates/config/initializers/environment.rb +30 -0
  52. data/templates/config/initializers/filter_parameter_logging.rb +22 -0
  53. data/templates/config/initializers/inflections.rb +20 -0
  54. data/templates/config/initializers/lograge.rb +25 -0
  55. data/templates/config/initializers/open_telemetry.rb +27 -0
  56. data/templates/config/initializers/sidekiq.rb +11 -0
  57. data/templates/config/initializers/slack_webhook_logger.rb +17 -0
  58. data/templates/config/sidekiq.yml +18 -0
  59. data/templates/hephaestus_gitignore +296 -0
  60. data/templates/lib/plug_app/schemas/api/2023-03-06/components/parameters/headers/yetto.json +42 -0
  61. data/templates/lib/plug_app/schemas/api/2023-03-06/components/parameters/plugInstallation.json +12 -0
  62. data/templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/plug.json +9 -0
  63. data/templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/responses.json +64 -0
  64. data/templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/yetto.json +1 -0
  65. data/templates/lib/plug_app/schemas/api/2023-03-06/openapi.json +27 -0
  66. data/templates/lib/plug_app/schemas/api/2023-03-06/paths/plug.json +91 -0
  67. data/templates/lib/plug_app/schemas/api/2023-03-06/paths/yetto/after_create_message.json +41 -0
  68. data/templates/lib/plug_app/schemas/api/2023-03-06/paths/yetto/after_create_plug_installation.json +41 -0
  69. data/templates/lib/tasks/test_tasks.rake +10 -0
  70. data/templates/script/ci +7 -0
  71. data/templates/script/hmac_text +22 -0
  72. data/templates/script/licenses +51 -0
  73. data/templates/script/ngrok +5 -0
  74. data/templates/script/security_checks/brakeman +5 -0
  75. data/templates/script/security_checks/bundle-audit +5 -0
  76. data/templates/script/server +5 -0
  77. data/templates/script/server-debug +5 -0
  78. data/templates/script/test +5 -0
  79. data/templates/script/typecheck +42 -0
  80. data/templates/sorbet/custom.rbi +14 -0
  81. data/templates/test/controllers/root_controller_test.rb +12 -0
  82. data/templates/test/controllers/settings_controller_test.rb +27 -0
  83. data/templates/test/controllers/yetto_controller_test.rb +130 -0
  84. data/templates/test/jobs/update_yetto_job_test.rb +41 -0
  85. data/templates/test/support/api.rb +74 -0
  86. data/templates/test/support/rails.rb +39 -0
  87. data/templates/test/support/webmocks/slack_webmock.rb +24 -0
  88. data/templates/test/support/webmocks/yetto.rb +94 -0
  89. data/templates/test/support/webmocks.rb +5 -0
  90. data/templates/test/test_helper.rb +24 -0
  91. metadata +209 -0
@@ -0,0 +1,74 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module API
5
+ module TestHelpers
6
+ include Rack::Test::Methods
7
+
8
+ def plug(method, path, headers: {}, version: nil, body: {})
9
+ version ||= PlugApp::CURRENT_VERSION
10
+ prepended_path = prepend_plug_path(version, path)
11
+
12
+ http_call(method, prepended_path, headers: headers, version: version, body: body)
13
+ end
14
+
15
+ def api(method, path, headers: {}, version: nil, body: {})
16
+ version ||= PlugApp::CURRENT_VERSION
17
+ prepended_path = prepend_api_path(version, path)
18
+
19
+ http_call(method, prepended_path, headers: headers, version: version, body: body)
20
+ end
21
+
22
+ def http_call(method, path, headers: {}, version: nil, body: {})
23
+ # explicitly assert headers cannot be nil
24
+ if headers.nil?
25
+ send(method, path, body.to_json)
26
+ else
27
+ headers["HTTP_ACCEPT"] ||= headers.fetch("HTTP_ACCEPT", "application/json")
28
+ headers["CONTENT_TYPE"] ||= headers.fetch("CONTENT_TYPE", "application/json")
29
+ send(method, path, body.to_json, headers)
30
+ end
31
+
32
+ JSON.parse(last_response.body) if last_response.body.present?
33
+ end
34
+
35
+ def assert_response(expected_status, expected_body = nil)
36
+ expected_status = case expected_status
37
+ when :not_found
38
+ PlugApp::HTTP::NOT_FOUND_I
39
+ when :not_acceptable
40
+ PlugApp::HTTP::NOT_ACCEPTABLE_I
41
+ when :ok, :okay
42
+ PlugApp::HTTP::OK_I
43
+ when :created
44
+ PlugApp::HTTP::CREATED_I
45
+ when :no_content
46
+ PlugApp::HTTP::NO_CONTENT_I
47
+ when :bad_request
48
+ PlugApp::HTTP::BAD_REQUEST_I
49
+ when :unauthorized
50
+ PlugApp::HTTP::UNAUTHORIZED_I
51
+ when :forbidden
52
+ PlugApp::HTTP::FORBIDDEN_I
53
+ when :service_unavailable
54
+ PlugApp::HTTP::SERVICE_UNAVAILABLE_I
55
+ else
56
+ raise ArgumentError, "Unknown status: #{expected_status}"
57
+ end
58
+
59
+ assert_equal(expected_status, last_response.status)
60
+ end
61
+
62
+ def prepend_plug_path(version, path)
63
+ "/plug/#{version}#{path}"
64
+ end
65
+
66
+ def prepend_api_path(version, path)
67
+ "/api/#{version}#{path}"
68
+ end
69
+
70
+ def app
71
+ Rails.application
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,39 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ ENV["RAILS_ENV"] ||= "test"
5
+ require_relative "../../config/environment"
6
+
7
+ module ActiveSupport
8
+ class TestCase
9
+ extend T::Sig
10
+
11
+ # Run tests in parallel with specified workers
12
+ parallelize(workers: :number_of_processors)
13
+
14
+ def setup
15
+ @organization_id ||= "org_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
16
+ @plug_installation_id ||= "pli_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
17
+ @inbox_id ||= "ibx_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
18
+ @plug_id ||= "plg_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
19
+ @message_id ||= "msg_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
20
+ @conversation_id ||= "cnv_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}"
21
+ end
22
+
23
+ def file_fixture_path(dir, name)
24
+ Rails.root.join("test", "fixtures", "files", dir, name)
25
+ end
26
+
27
+ def assert_expected_args(expected_args)
28
+ lambda do |job_args_arr|
29
+ expected_args.each do |expected_arg|
30
+ key = expected_arg.first
31
+ value = expected_arg.second
32
+ expected_value = job_args_arr.first[key]
33
+
34
+ assert_equal(expected_value, value)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,24 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module Webmocks
5
+ module SlackWebmock
6
+ extend T::Sig
7
+ extend T::Helpers
8
+
9
+ sig { returns(T.untyped) }
10
+ def assert_requested_send_to_slack_log
11
+ assert_requested(:post, "https://slack.com:80/the_log_room")
12
+ end
13
+
14
+ sig { returns(T.untyped) }
15
+ def stub_send_to_slack_log
16
+ stub_request(:post, "https://slack.com:80/the_log_room")
17
+ .to_return(
18
+ status: 200,
19
+ headers: { content_type: "application/json; charset=utf-8" },
20
+ body: {}.to_json,
21
+ )
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,94 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module Webmocks
5
+ module Yetto
6
+ SHA256_DIGEST = OpenSSL::Digest.new("sha256")
7
+
8
+ def yetto_auth_header(payload)
9
+ "sha256=#{OpenSSL::HMAC.hexdigest(SHA256_DIGEST, YETTO_PLUG_APP_TOKEN, payload.to_json)}"
10
+ end
11
+
12
+ def assert_requested_get_plug_installation(organization_id, inbox_id, plug_installation_id)
13
+ assert_requested(:get, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{organization_id}/inboxes/#{inbox_id}/plug_installations/#{plug_installation_id}")
14
+ end
15
+
16
+ def stub_get_plug_installation(organization_id, inbox_id, plug_installation_id, response = nil, status: 200)
17
+ response ||= {
18
+ installed_on_inbox: {
19
+ id: inbox_id,
20
+ organization: {
21
+ id: organization_id,
22
+ status: "active",
23
+ },
24
+ },
25
+ plug: {
26
+ id: "plg_#{Faker::Alphanumeric.alphanumeric(number: 26).upcase}",
27
+ },
28
+ settings: {
29
+ from_email: "new@from.company",
30
+ },
31
+ }
32
+
33
+ stub_request(:get, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{@organization_id}/inboxes/#{@inbox_id}/plug_installations/#{plug_installation_id}")
34
+ .to_return(
35
+ status: status,
36
+ headers: { content_type: "application/json; charset=utf-8" },
37
+ body: response.to_json,
38
+ )
39
+ end
40
+
41
+ def assert_requested_update_installation(organization_id, inbox_id, plug_installation_id)
42
+ assert_requested(:patch, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{@organization_id}/inboxes/#{@inbox_id}/plug_installations/#{plug_installation_id}")
43
+ end
44
+
45
+ def stub_update_installation(organization_id, inbox_id, plug_installation_id, params, response: {}, status: 200)
46
+ stub_request(:patch, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{@organization_id}/inboxes/#{@inbox_id}/plug_installations/#{plug_installation_id}")
47
+ .with(
48
+ body: params,
49
+ )
50
+ .to_return(
51
+ status: 200,
52
+ headers: { content_type: "application/json; charset=utf-8" },
53
+ body: response.to_json,
54
+ )
55
+ end
56
+
57
+ def assert_requested_create_message(organization_id, inbox_id)
58
+ assert_requested(:post, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{organization_id}/inboxes/#{inbox_id}/messages")
59
+ end
60
+
61
+ def stub_create_message(organization_id, inbox_id, creator_id, payload)
62
+ stub_request(:post, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{organization_id}/inboxes/#{inbox_id}/messages")
63
+ .with(
64
+ body: payload,
65
+ )
66
+ .to_return(
67
+ status: 200,
68
+ headers: { content_type: "application/json; charset=utf-8" },
69
+ body: {}.to_json,
70
+ )
71
+ end
72
+
73
+ def assert_requested_create_switch(organization_id, inbox_id)
74
+ assert_requested(:post, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{organization_id}/inboxes/#{inbox_id}/switches")
75
+ end
76
+
77
+ def stub_create_switch(organization_id, inbox_id, creator_id, params)
78
+ payload = {
79
+ name: "After install",
80
+ creator: { id: creator_id },
81
+ }
82
+
83
+ stub_request(:post, "#{::YettoService::YETTO_API_VERSION_TLD}/organizations/#{organization_id}/inboxes/#{inbox_id}/switches")
84
+ .with(
85
+ body: payload,
86
+ )
87
+ .to_return(
88
+ status: 200,
89
+ headers: { content_type: "application/json; charset=utf-8" },
90
+ body: {}.to_json,
91
+ )
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,5 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module Webmocks
5
+ end
@@ -0,0 +1,24 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require "debug" if ENV.fetch("DEBUG", false)
5
+
6
+ require "httpx"
7
+ require "webmock/minitest"
8
+ require "httpx/adapters/webmock"
9
+ WebMock.enable!
10
+ WebMock.disable_net_connect!(allow_localhost: true)
11
+
12
+ require "dotenv"
13
+ Dotenv.load(".env.test")
14
+
15
+ require_relative "./support/rails"
16
+
17
+ require "minitest/pride"
18
+
19
+ require "webmock/minitest"
20
+ # Load everything else from test/support
21
+ Dir[File.expand_path("support/**/*.rb", __dir__)].each { |rb| require(rb) }
22
+
23
+ # https://github.com/freerange/mocha#rails
24
+ require "mocha/minitest"
metadata ADDED
@@ -0,0 +1,209 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hephaestus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Garen Torikian
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-02-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: parser
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ force_ruby_platform: false
42
+ - !ruby/object:Gem::Dependency
43
+ name: rails
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 7.0.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 7.0.0
56
+ force_ruby_platform: false
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '5.6'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '5.6'
71
+ - !ruby/object:Gem::Dependency
72
+ name: minitest-focus
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.1'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.1'
85
+ description: 'Hephaestus is a Rails generator to create plugs for Yetto.
86
+
87
+ '
88
+ email:
89
+ executables:
90
+ - hephaestus
91
+ extensions: []
92
+ extra_rdoc_files:
93
+ - README.md
94
+ - LICENSE.txt
95
+ files:
96
+ - ".ruby-version"
97
+ - CHANGELOG.md
98
+ - LICENSE.txt
99
+ - README.md
100
+ - bin/hephaestus
101
+ - lib/hephaestus.rb
102
+ - lib/hephaestus/actions.rb
103
+ - lib/hephaestus/actions/strip_comments_action.rb
104
+ - lib/hephaestus/app_builder.rb
105
+ - lib/hephaestus/exit_on_failure.rb
106
+ - lib/hephaestus/generators/app_generator.rb
107
+ - lib/hephaestus/generators/base.rb
108
+ - lib/hephaestus/generators/config_generator.rb
109
+ - lib/hephaestus/generators/core_generator.rb
110
+ - lib/hephaestus/generators/deployment_generator.rb
111
+ - lib/hephaestus/generators/lib_generator.rb
112
+ - lib/hephaestus/generators/license_generator.rb
113
+ - lib/hephaestus/generators/rubocop_generator.rb
114
+ - lib/hephaestus/generators/sorbet_generator.rb
115
+ - lib/hephaestus/version.rb
116
+ - templates/Gemfile.erb
117
+ - templates/Procfile.debug
118
+ - templates/Procfile.dev
119
+ - templates/README.md.erb
120
+ - templates/app/controllers/application_controller.rb
121
+ - templates/app/controllers/concerns/authable.rb
122
+ - templates/app/controllers/root_controller.rb
123
+ - templates/app/controllers/settings_controller.rb
124
+ - templates/app/controllers/staff_controller.rb
125
+ - templates/app/controllers/yetto_controller.rb
126
+ - templates/app/jobs/application_job.rb
127
+ - templates/app/jobs/update_yetto_job.rb
128
+ - templates/app/lib/body_parameter.rb
129
+ - templates/app/lib/body_parameter/yetto_parameters.rb
130
+ - templates/app/lib/constants/app.rb
131
+ - templates/app/lib/headers.rb
132
+ - templates/app/lib/headers/yetto.rb
133
+ - templates/app/lib/path_parameter.rb
134
+ - templates/app/lib/path_parameter/yetto_parameters.rb
135
+ - templates/app/lib/plug_app/http.rb
136
+ - templates/app/lib/plug_app/middleware/malformed_request.rb
137
+ - templates/app/lib/plug_app/middleware/not_found.rb
138
+ - templates/app/lib/plug_app/middleware/openapi_validation.rb
139
+ - templates/app/lib/plug_app/middleware/tracing_attributes.rb
140
+ - templates/app/lib/query_parameter.rb
141
+ - templates/app/serializers/error_serializer.rb
142
+ - templates/app/services/yetto_service.rb
143
+ - templates/app/views/settings/index.json.jbuilder
144
+ - templates/config/initializers/cors.rb
145
+ - templates/config/initializers/environment.rb
146
+ - templates/config/initializers/filter_parameter_logging.rb
147
+ - templates/config/initializers/inflections.rb
148
+ - templates/config/initializers/lograge.rb
149
+ - templates/config/initializers/open_telemetry.rb
150
+ - templates/config/initializers/sidekiq.rb
151
+ - templates/config/initializers/slack_webhook_logger.rb
152
+ - templates/config/sidekiq.yml
153
+ - templates/hephaestus_gitignore
154
+ - templates/lib/plug_app/schemas/api/2023-03-06/components/parameters/headers/yetto.json
155
+ - templates/lib/plug_app/schemas/api/2023-03-06/components/parameters/plugInstallation.json
156
+ - templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/plug.json
157
+ - templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/responses.json
158
+ - templates/lib/plug_app/schemas/api/2023-03-06/components/schemas/yetto.json
159
+ - templates/lib/plug_app/schemas/api/2023-03-06/openapi.json
160
+ - templates/lib/plug_app/schemas/api/2023-03-06/paths/plug.json
161
+ - templates/lib/plug_app/schemas/api/2023-03-06/paths/yetto/after_create_message.json
162
+ - templates/lib/plug_app/schemas/api/2023-03-06/paths/yetto/after_create_plug_installation.json
163
+ - templates/lib/tasks/test_tasks.rake
164
+ - templates/script/ci
165
+ - templates/script/hmac_text
166
+ - templates/script/licenses
167
+ - templates/script/ngrok
168
+ - templates/script/security_checks/brakeman
169
+ - templates/script/security_checks/bundle-audit
170
+ - templates/script/server
171
+ - templates/script/server-debug
172
+ - templates/script/test
173
+ - templates/script/typecheck
174
+ - templates/sorbet/custom.rbi
175
+ - templates/test/controllers/root_controller_test.rb
176
+ - templates/test/controllers/settings_controller_test.rb
177
+ - templates/test/controllers/yetto_controller_test.rb
178
+ - templates/test/jobs/update_yetto_job_test.rb
179
+ - templates/test/support/api.rb
180
+ - templates/test/support/rails.rb
181
+ - templates/test/support/webmocks.rb
182
+ - templates/test/support/webmocks/slack_webmock.rb
183
+ - templates/test/support/webmocks/yetto.rb
184
+ - templates/test/test_helper.rb
185
+ homepage: http://github.com/yettoapp/hephaestus
186
+ licenses:
187
+ - MIT
188
+ metadata: {}
189
+ post_install_message:
190
+ rdoc_options:
191
+ - "--charset=UTF-8"
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: 3.1.1
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '3.0'
204
+ requirements: []
205
+ rubygems_version: 3.3.7
206
+ signing_key:
207
+ specification_version: 4
208
+ summary: Generate a Rails app that can be used to create plugs for Yetto.
209
+ test_files: []