hephaestus 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 514b3a3d6af4cd4f265334e540510abeba70de3758c4c92e6dd3a6297c6e428b
4
- data.tar.gz: d852903702132b3add71f638494809ad6bc167bbbb3f83ec625bd21999cbd081
3
+ metadata.gz: a6ea72738e1e92fb2cde19166a290573e1a4f3d51f4889c13fcfb0530998ff28
4
+ data.tar.gz: 6a5980d8b598044f144feda0aae7a74cafd156349fcd7871ff1b431c21fad32c
5
5
  SHA512:
6
- metadata.gz: 35438e55bf05ced5fb9e90002f01ada1ee1b3ae9d8af941bf910a169c9d0ac45ace87f0ec8c086640b2c5c50d68bee7db8569c33bc92fc56cac5d83abe05fd77
7
- data.tar.gz: 0b8d7b5cd5b5aa26328c704e44ed0385ba0865719d5e48440a50484475b7e0dc0644939ad94944111d9e1cdcbf3ba7ac560672675772ea8a0e6b6265c1206eb1
6
+ metadata.gz: 5b901a9802f9b40d387ee9f476583e79c3e04fd8f0f324497dd27dfe67464d408cc694ce0875aefe36ab1dabed4f1e7ceff25ce5f2a672868590da1893b2099a
7
+ data.tar.gz: 48c94b50e1cf0420e91c69d1c2c17e8d5d96e4aead81f43a284d6f6999f31910cf29b9b9b349998c89403839eb559705a93337288637764292e3fc5ae1f7b9c6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [v0.5.0] - 13-10-2023
2
+ ## What's Changed
3
+ * More edits by @gjtorikian in https://github.com/yettoapp/hephaestus/pull/11
4
+
5
+
6
+ **Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.4.0...v0.5.0
7
+ ## [v0.4.0] - 29-09-2023
8
+ ## What's Changed
9
+ * Yet more changes by @gjtorikian in https://github.com/yettoapp/hephaestus/pull/10
10
+
11
+
12
+ **Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.3.1...v0.4.0
1
13
  ## [v0.3.1] - 18-09-2023
2
14
  **Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.3.0...v0.3.1
3
15
  ## [v0.3.0] - 12-09-2023
data/bin/hephaestus CHANGED
@@ -70,5 +70,6 @@ ARGV.push("--minimal")
70
70
  ARGV.push("--no-skip-active-job")
71
71
  ARGV.push("--skip-asset-pipeline")
72
72
  ARGV.push("--skip-active-record")
73
+ ARGV.push("--skip-docker")
73
74
 
74
75
  Hephaestus::AppGenerator.start
@@ -73,7 +73,7 @@ module Hephaestus
73
73
  def setup_slack_logger
74
74
  config = <<~EOD
75
75
  config.after_initialize do
76
- Rails.logger.extend(ActiveSupport::Logger.broadcast(SlackWebhookLogger.logger))
76
+ Rails.logger.broadcast_to(SlackWebhookLogger.logger)
77
77
  end
78
78
  EOD
79
79
  configure_environment("production", config)
@@ -158,17 +158,17 @@ module Hephaestus
158
158
  def replace_generic_variables
159
159
  say(set_color("Replacing generic variable names...", :cyan))
160
160
  replace_in_files(destination_root, /App(?!lication)/, short_app_name.capitalize)
161
- replace_in_files(destination_root, %r{(?<!yetto|plugs\.yetto\.)app(?!lication|/|roximate)}, short_app_name.downcase)
161
+ replace_in_files(destination_root, %r{(?<!yetto|sw|plugs\.yetto\.)app(?!lication|/|roximate)}, short_app_name.downcase)
162
162
  replace_in_files(destination_root, "PlugApp", app_name.underscore.camelcase)
163
163
  replace_in_files(destination_root, "plug-app", app_name.dasherize)
164
164
  replace_in_files("destination_root}/.github/workflows/test.yml", "plug-app", app_name.dasherize)
165
165
  replace_in_files(destination_root, "PLUG_APP", app_name.underscore.upcase)
166
- # these usually take the form of "plug_app", as a hack to prevent them from changing by the other
167
- # rename methods...I think. I actually can't say for sure I remember what it's for.
168
- replace_in_files(destination_root, "plug_", "")
166
+ replace_in_files(destination_root, "plug_app", app_name.underscore)
169
167
 
170
- # this is erroneously changed
168
+ # these are erroneously changed
171
169
  replace_in_file("script/server", "/usr/src/#{short_app_name.downcase}", "/usr/src/app")
170
+ replace_in_file("vendor/fly/fly-production.toml", "#{short_app_name.downcase} = ", "app = ")
171
+ replace_in_file("vendor/fly/fly-staging.toml", "#{short_app_name.downcase} = ", "app =")
172
172
  end
173
173
 
174
174
  private
@@ -10,7 +10,7 @@ module Hephaestus
10
10
 
11
11
  def bundle_command(*)
12
12
  super
13
- exit(false) if $CHILD_STATUS.exitstatus.nonzero?
13
+ exit(false) if $CHILD_STATUS.exitstatus.nonzero? # rubocop:disable Rails/Exit
14
14
  end
15
15
 
16
16
  module ClassMethods
@@ -52,6 +52,8 @@ module Hephaestus
52
52
  build(:replace_gemfile)
53
53
  capture_stdout do
54
54
  bundle_command("install")
55
+ bundle_command("update")
56
+ bundle_command("binstub foreman")
55
57
  bundle_command("lock --add-platform x86_64-linux")
56
58
  end
57
59
  end
@@ -202,11 +204,12 @@ module Hephaestus
202
204
 
203
205
  * Set `settings/branches` to protect `production`
204
206
  * ✅ Require status checks to pass before merging
205
- * 🖊️ Status checks that are required: `test`, `ruby / brakeman`, `ruby / bundle-audit`.
207
+ * 🖊️ Status checks that are required: `ruby / test_without_services`, `docker / test-build`, `ruby / brakeman`, `ruby / bundle-audit`.
208
+
206
209
  You can only set those 👆 after you've opened the first PR on GitHub. Crazy, I know!!
207
210
  But, doing so is *essential* for automerge to function properly.
208
211
 
209
- * Speaking of which, in `/settings`
212
+ * In `/settings`:
210
213
  * ✅ Allow auto-merge
211
214
  * ✅ Automatically delete head branches
212
215
  OUTPUT
@@ -229,22 +232,22 @@ module Hephaestus
229
232
  end
230
233
 
231
234
  private def capture_stdout
232
- stream = "stdout"
233
- captured_stream = Tempfile.new(stream)
234
- stream_io = eval("$#{stream}", binding, __FILE__, __LINE__)
235
- origin_stream = stream_io.dup
236
- stream_io.reopen(captured_stream)
235
+ # stream = "stdout"
236
+ # captured_stream = Tempfile.new(stream)
237
+ # stream_io = eval("$#{stream}", binding, __FILE__, __LINE__)
238
+ # origin_stream = stream_io.dup
239
+ # stream_io.reopen(captured_stream)
237
240
 
238
241
  yield
239
242
 
240
- stream_io.rewind
241
- captured_stream.read
242
- ensure
243
- unless captured_stream.nil?
244
- captured_stream.close
245
- captured_stream.unlink
246
- end
247
- stream_io.reopen(origin_stream) unless stream_io.nil?
243
+ # stream_io.rewind
244
+ # captured_stream.read
245
+
246
+ # unless captured_stream.nil?
247
+ # captured_stream.close
248
+ # captured_stream.unlink
249
+ # end
250
+ # stream_io.reopen(origin_stream) unless stream_io.nil?
248
251
  end
249
252
  end
250
253
  end
@@ -19,7 +19,7 @@ module Hephaestus
19
19
  end
20
20
 
21
21
  def jobs
22
- copy_file("app/jobs/application_job.rb", "app/jobs/application_job.rb")
22
+ copy_file("app/jobs/application_job.rb", "app/jobs/application_job.rb", force: true)
23
23
  copy_file("app/jobs/update_yetto_job.rb", "app/jobs/update_yetto_job.rb")
24
24
  end
25
25
 
@@ -20,5 +20,11 @@ module Hephaestus
20
20
  copy_file("Dockerfile", "Dockerfile")
21
21
  copy_file("bin/docker-entrypoint", "bin/docker-entrypoint")
22
22
  end
23
+
24
+ def fly
25
+ directory("vendor/fly", "vendor/fly")
26
+ copy_file("Dockerfile", "Dockerfile")
27
+ copy_file("bin/docker-entrypoint", "bin/docker-entrypoint")
28
+ end
23
29
  end
24
30
  end
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Hephaestus
5
- VERSION = "0.4.0"
5
+ VERSION = "0.5.1"
6
6
  RAILS_VERSION = "~> 7.0"
7
7
  RUBY_VERSION = File
8
8
  .read("#{File.dirname(__FILE__)}/../../.ruby-version")
data/lib/hephaestus.rb CHANGED
@@ -11,10 +11,15 @@ require "debug" if debugging?
11
11
 
12
12
  require "hephaestus/version"
13
13
  require "hephaestus/exit_on_failure"
14
+
14
15
  require "hephaestus/generators/app_generator"
15
- Dir.glob(File.join(__dir__, "hephaestus", "generators", "*.rb")).each do |file|
16
- require file
17
- end
16
+ require "hephaestus/generators/config_generator"
17
+ require "hephaestus/generators/core_generator"
18
+ require "hephaestus/generators/deployment_generator"
19
+ require "hephaestus/generators/lib_generator"
20
+ require "hephaestus/generators/license_generator"
21
+ require "hephaestus/generators/rubocop_generator"
22
+ require "hephaestus/generators/sorbet_generator"
18
23
 
19
24
  require "hephaestus/actions"
20
25
  require "hephaestus/actions/strip_comments_action"
@@ -11,10 +11,16 @@ allowed:
11
11
 
12
12
  ignored:
13
13
  bundler:
14
+ - base64 # BSD-2-Clause ("This file is released under the same license as ruby.")
15
+ - bigdecimal # BSD-2-Clause ("This file is released under the same license as ruby.")
14
16
  - bundler-audit # GPL-3.0; but also, only used in CI/test
15
17
  - date # BSD-2-Clause
18
+ - drb # BSD-2-Clause ("This file is released under the same license as ruby.")
19
+ - io-console # BSD-2-Clause
20
+ - mutex_m # BSD-2-Clause ("This file is released under the same license as ruby.")
16
21
  - net-protocol # BSD-2-Clause
17
22
  - racc # BSD-2-Clause
23
+ - reline # BSD-2-Clause ("This file is released under the same license as ruby.")
18
24
  - ruby2_keywords # BSD-2-Clause; ignored because of custom LICENSE text
19
25
  - sidekiq # LGPL-3.0; ignored because of custom LICENSE text
20
26
 
data/templates/Dockerfile CHANGED
@@ -4,8 +4,8 @@
4
4
  ARG RUBY_VERSION=3.2.1
5
5
  FROM ruby:$RUBY_VERSION-slim as base
6
6
 
7
- # Rails app lives here
8
- WORKDIR /plug-github
7
+ # The plug-app code lives here
8
+ WORKDIR /plug-app
9
9
 
10
10
  # Set production environment
11
11
  ARG RAILS_ENV="production"
@@ -116,3 +116,5 @@ group :ci do
116
116
  gem "brakeman", "~> 5.3"
117
117
  gem "bundle-audit", "~> 0.1"
118
118
  end
119
+
120
+ gem "hephaestus", group: [:development, :test]
@@ -17,7 +17,7 @@ module Authable
17
17
  state = params.fetch(:state, "")
18
18
  _, _, gh_nonce, _, _, _, _ = parse_state(state)
19
19
 
20
- return if ActiveSupport::SecurityUtils.secure_compare((gh_nonce || ""), PLUG_APP_NONCE)
20
+ return false if ActiveSupport::SecurityUtils.secure_compare((gh_nonce || ""), PLUG_APP_NONCE)
21
21
 
22
22
  self.status = PlugApp::HTTP::BAD_REQUEST_I
23
23
  self.response_body = ::ErrorSerializer.format(PlugApp::HTTP::BAD_REQUEST)
@@ -6,6 +6,14 @@ class SettingsController < ApplicationController
6
6
 
7
7
  include PathParameter::SettingsParameters
8
8
 
9
+ before_action :ensure_json_request
10
+ sig { void }
11
+ def ensure_json_request
12
+ return if request.format.json?
13
+
14
+ not_acceptable
15
+ end
16
+
9
17
  sig { void }
10
18
  def new
11
19
  @step = T.let(params.fetch(:step, 1).to_i || 1, T.nilable(Integer))
@@ -8,7 +8,7 @@ class YettoService
8
8
 
9
9
  # explicitly different than what's in environment.rb, because local
10
10
  # Yetto expects HTTP; environment.rb can use HTTPS because it passes through ngrok.io
11
- PROTOCOL = Rails.env.development? ? "http://" : "https://"
11
+ PROTOCOL = Rails.env.development? ? "http" : "https"
12
12
  YETTO_API_VERSION_TLD = "#{PROTOCOL}://#{YETTO_API_TLD}/#{YETTO_API_VERSION}"
13
13
  JWT_ALGORITHM = "RS256"
14
14
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  require "rake/testtask"
5
5
 
6
- if Rails.env.development? || Rails.env.test?
6
+ if Rails.env.local?
7
7
  begin
8
8
  require "rubocop/rake_task"
9
9
 
@@ -25,7 +25,7 @@ require "httpx/adapters/webmock"
25
25
  WebMock.enable!
26
26
  WebMock.disable_net_connect!(allow_localhost: true)
27
27
 
28
- require_relative "./support/rails"
28
+ require_relative "support/rails"
29
29
 
30
30
  require "minitest/pride"
31
31
 
@@ -1,4 +1,3 @@
1
- # fly.toml app configuration file generated for plug-app on 2023-05-05T07:11:14-04:00
2
1
  #
3
2
  # See https://fly.io/docs/reference/configuration/ for information about how to use this file.
4
3
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hephaestus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-29 00:00:00.000000000 Z
11
+ date: 2023-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -251,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
251
251
  - !ruby/object:Gem::Version
252
252
  version: 3.4.7
253
253
  requirements: []
254
- rubygems_version: 3.4.20
254
+ rubygems_version: 3.4.21
255
255
  signing_key:
256
256
  specification_version: 4
257
257
  summary: Generate a Rails app that can be used to create plugs for Yetto.