hephaestus 0.4.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 514b3a3d6af4cd4f265334e540510abeba70de3758c4c92e6dd3a6297c6e428b
4
- data.tar.gz: d852903702132b3add71f638494809ad6bc167bbbb3f83ec625bd21999cbd081
3
+ metadata.gz: 35a7bffcd76ad59ed8a990221e201641e0931d5959d3a23eb1ff38e6cab6e196
4
+ data.tar.gz: 3a8041e10782f1feae394c607ff0b2884454bf2497973b204e1038d8318a8b19
5
5
  SHA512:
6
- metadata.gz: 35438e55bf05ced5fb9e90002f01ada1ee1b3ae9d8af941bf910a169c9d0ac45ace87f0ec8c086640b2c5c50d68bee7db8569c33bc92fc56cac5d83abe05fd77
7
- data.tar.gz: 0b8d7b5cd5b5aa26328c704e44ed0385ba0865719d5e48440a50484475b7e0dc0644939ad94944111d9e1cdcbf3ba7ac560672675772ea8a0e6b6265c1206eb1
6
+ metadata.gz: 343b21a22b01d3dec66e68ab5d807612930f2f46ed0fc5daa3d473745ce5db89978a3cd605b13ecb24cae51101e072dd5dbd891ed424855ce0724fd0233227c7
7
+ data.tar.gz: 8127efafa530a873c67a014ea0beef448b768c908bb4629a668eef1abcfe8b1527886447ad3757298d07f33483cab8e7a9c9b3f9839d7d0f88d7a04fb56f79ca
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [v0.4.0] - 29-09-2023
2
+ ## What's Changed
3
+ * Yet more changes by @gjtorikian in https://github.com/yettoapp/hephaestus/pull/10
4
+
5
+
6
+ **Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.3.1...v0.4.0
1
7
  ## [v0.3.1] - 18-09-2023
2
8
  **Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.3.0...v0.3.1
3
9
  ## [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
@@ -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.0"
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]
@@ -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))
@@ -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.0
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-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler