hephaestus 0.8.12.1 → 0.8.12.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/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/bin/hephaestus +17 -27
- data/lib/hephaestus/engine.rb +2 -1
- data/lib/hephaestus/generators/app_generator.rb +177 -92
- data/lib/hephaestus/generators/base.rb +0 -8
- data/lib/hephaestus/version.rb +1 -1
- data/lib/hephaestus.rb +2 -9
- data/templates/bin/bundle +1 -1
- data/templates/{Gemfile → root/Gemfile} +0 -4
- data/templates/root/compose.yml +5 -0
- data/templates/root/hephaestus_dockerignore +43 -0
- data/templates/root/hephaestus_gitattributes +5 -0
- data/templates/root/hephaestus_licensed.yml +56 -0
- data/templates/root/hephaestus_rubocop.yml +5 -0
- data/templates/root/hephaestus_ruby-version +1 -0
- metadata +15 -19
- data/lib/hephaestus/app_builder.rb +0 -79
- data/lib/hephaestus/generators/config_generator.rb +0 -18
- data/lib/hephaestus/generators/core_generator.rb +0 -38
- data/lib/hephaestus/generators/db_generator.rb +0 -12
- data/lib/hephaestus/generators/deployment_generator.rb +0 -25
- data/lib/hephaestus/generators/lib_generator.rb +0 -12
- data/lib/hephaestus/generators/license_generator.rb +0 -19
- data/lib/hephaestus/generators/rubocop_generator.rb +0 -18
- data/lib/hephaestus/generators/sorbet_generator.rb +0 -17
- data/lib/version.rb +0 -6
- /data/templates/{Dockerfile → root/Dockerfile} +0 -0
- /data/templates/{Procfile → root/Procfile} +0 -0
- /data/templates/{README.md.erb → root/README.md.tt} +0 -0
- /data/templates/{config.ru → root/config.ru} +0 -0
- /data/templates/{hephaestus_env.sample → root/hephaestus_env.sample} +0 -0
- /data/templates/{hephaestus_gitignore → root/hephaestus_gitignore} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 946513d5bfb959191872e0404f6eb0c95c4a6d4ded918425926ba0ca24f09dce
|
|
4
|
+
data.tar.gz: 0524cf36eb6e3717eb1c1b7fab0de51438cbce348b0882a77e50422d5c25747a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15f88a25cfea5f83d2fb5ac629d163ab2d8b1205bc3b5a99cf38282b8628cac6da86a31f68c99e4e9eb0511e6a5f270ce562aada76e76db9eebf31a2f25073aa
|
|
7
|
+
data.tar.gz: 4271659d3c4302dcfa5cb991b8b9c01f20a8d2e8d13b3b554cfea8a79417117ee86ee2228188984bc1a78b7f42e5a81325386ebade0714c32dd14a7d8a5168c0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# [v0.8.12.2] - 17-12-2024
|
|
2
|
+
## What's Changed
|
|
3
|
+
* Fixups by @gjtorikian in https://github.com/yettoapp/hephaestus/pull/97
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
**Full Changelog**: https://github.com/yettoapp/hephaestus/compare/v0.8.12.1...v0.8.12.2
|
|
1
7
|
# [v0.8.12.1] - 16-12-2024
|
|
2
8
|
## What's Changed
|
|
3
9
|
* general updates by @gjtorikian in https://github.com/yettoapp/hephaestus/pull/95
|
data/README.md
CHANGED
|
@@ -26,7 +26,7 @@ Where `app` represents the name of the platform you'd like to interact with, lik
|
|
|
26
26
|
If you're working on updating/testing this gem locally, you may also try:
|
|
27
27
|
|
|
28
28
|
```
|
|
29
|
-
rm -rf plug-app && DEBUG=1 bundle exec bin/hephaestus plug-app
|
|
29
|
+
rm -rf plug-app && DEBUG=1 bundle exec hephaestus/bin/hephaestus plug-app
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
This way you can wipe the dir and quickly iterate on new changes.
|
data/bin/hephaestus
CHANGED
|
@@ -67,44 +67,34 @@ if ENV.fetch("HEPHAESTUS_NO_EXTERNAL", "0") != "1"
|
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
puts Rainbow("
|
|
71
|
-
|
|
72
|
-
path = ARGV.first
|
|
73
|
-
if File.exist?(path)
|
|
74
|
-
puts Rainbow("\nError: The directory #{path} already exists.").red
|
|
75
|
-
exit 1
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
unless path.start_with?("plug-")
|
|
79
|
-
puts Rainbow("\nError: The directory name must start with 'plug-'").red
|
|
80
|
-
exit 1
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
if path.split("-").length < 2
|
|
84
|
-
puts Rainbow("\nError: The directory name must start with 'plug-'").red
|
|
85
|
-
exit 1
|
|
86
|
-
end
|
|
70
|
+
puts Rainbow("You're on the latest version of Hephaestus! Proceeding...").blue
|
|
87
71
|
|
|
88
72
|
ENGINE_ROOT = File.expand_path("..", __dir__)
|
|
89
73
|
ENGINE_PATH = File.expand_path("../lib/hephaestus/engine", __dir__)
|
|
90
74
|
APP_PATH = File.expand_path("../test/dummy/config/application", __dir__)
|
|
91
75
|
|
|
92
76
|
# Set up gems listed in the Gemfile.
|
|
93
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
|
94
|
-
require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
|
|
77
|
+
# ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
|
78
|
+
# require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
|
|
95
79
|
|
|
96
80
|
require "rails/all"
|
|
97
81
|
require "hephaestus"
|
|
98
82
|
|
|
99
83
|
templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
|
|
100
84
|
Hephaestus::AppGenerator.source_root(templates_root)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
85
|
+
|
|
86
|
+
# Since we're hijacking Rails' generation process,
|
|
87
|
+
# we *do not* want any of Rails' generators to interfere.
|
|
88
|
+
# Rails provides its own list of generators,
|
|
89
|
+
# and then attaches Hephaestus' generators to that list;
|
|
90
|
+
# so, we'll remove any generators that come before Hephaestus' generators.
|
|
91
|
+
config = Hephaestus::AppGenerator.all_commands
|
|
92
|
+
|
|
93
|
+
delete_keys = true
|
|
94
|
+
config.keys.each do |key|
|
|
95
|
+
break if key == "hephaestus_generator"
|
|
96
|
+
|
|
97
|
+
config.delete(key) if delete_keys
|
|
98
|
+
end
|
|
109
99
|
|
|
110
100
|
Hephaestus::AppGenerator.start
|
data/lib/hephaestus/engine.rb
CHANGED
|
@@ -16,7 +16,8 @@ module Hephaestus
|
|
|
16
16
|
when "production", "staging"
|
|
17
17
|
ENV["GIT_SHA"] || ""
|
|
18
18
|
when "development"
|
|
19
|
-
%x(git rev-parse HEAD)
|
|
19
|
+
result = %x(git rev-parse HEAD 2>&1)
|
|
20
|
+
$CHILD_STATUS == 0 ? result : "deadbeef" # check if the child process exited cleanly.
|
|
20
21
|
when "test"
|
|
21
22
|
"deadbeef"
|
|
22
23
|
end.chomp
|
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
require "rails/generators"
|
|
5
5
|
require "rails/generators/rails/app/app_generator"
|
|
6
6
|
require "tempfile"
|
|
7
|
+
require "bundler"
|
|
7
8
|
|
|
9
|
+
require "hephaestus/actions"
|
|
8
10
|
require "hephaestus/app_name"
|
|
9
11
|
module Hephaestus
|
|
10
12
|
class AppGenerator < Rails::Generators::AppGenerator
|
|
11
13
|
include Hephaestus::AppName
|
|
14
|
+
include Hephaestus::Actions
|
|
15
|
+
|
|
16
|
+
attr_reader :result_dir
|
|
12
17
|
|
|
13
18
|
hide!
|
|
14
19
|
|
|
@@ -24,16 +29,29 @@ module Hephaestus
|
|
|
24
29
|
group: :hephaestus,
|
|
25
30
|
desc: "Show this help message and quit"
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def hephaestus_initialize
|
|
32
|
+
# This method name is important as everything before it is added by
|
|
33
|
+
# Rails::Generators::AppGenerator; this is our true entrypoint.
|
|
34
|
+
def hephaestus_generator
|
|
33
35
|
say(set_color("Invoking Hephaestus customizations...", :cyan))
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
path = ARGV.first
|
|
38
|
+
if File.exist?(path)
|
|
39
|
+
raise(Rainbow("\nError: The directory #{path} already exists.").red.to_s)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
unless path.start_with?("plug-")
|
|
43
|
+
raise(Rainbow("\nError: The directory name must start with 'plug-'").red.to_s)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
if path.split("-").length < 2
|
|
47
|
+
raise(Rainbow("\nError: The directory name must start with 'plug-'").red.to_s)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
@destination_stack << @app_path
|
|
51
|
+
|
|
52
|
+
@result_dir = @destination_stack.join(File::SEPARATOR)
|
|
53
|
+
|
|
54
|
+
invoke(:copy_basics)
|
|
37
55
|
|
|
38
56
|
invoke(:copy_github_actions)
|
|
39
57
|
invoke(:copy_vscode_settings)
|
|
@@ -44,28 +62,20 @@ module Hephaestus
|
|
|
44
62
|
invoke(:setup_test_environment)
|
|
45
63
|
|
|
46
64
|
invoke(:configure_app)
|
|
47
|
-
invoke(:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def init_git
|
|
51
|
-
run("git remote add origin https://github.com/yettoapp/#{app_name}.git")
|
|
52
|
-
run("git branch -m production")
|
|
65
|
+
invoke(:finalize)
|
|
66
|
+
invoke(:first_commit)
|
|
67
|
+
invoke(:outro)
|
|
53
68
|
end
|
|
54
69
|
|
|
55
|
-
def
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# FIXME: unsure why, but when the generators are called, Rails expects Gemfiles in these locations?
|
|
59
|
-
copy_file("Gemfile", File.join(Hephaestus::AppGenerator.source_root, "Gemfile"))
|
|
60
|
-
copy_file("Gemfile", File.join(Hephaestus::AppGenerator.source_root, "..", "Gemfile"))
|
|
61
|
-
replace_in_files(Hephaestus::AppGenerator.source_root, %|ruby File.read(".ruby-version").strip|, %|ruby "#{Hephaestus::RUBY_VERSION}"|)
|
|
70
|
+
def copy_basics
|
|
71
|
+
capture_stdout do
|
|
72
|
+
directory("root", ".")
|
|
62
73
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
run("BUNDLE_GEMFILE=\"#{destination_root}/Gemfile\" bundle install", abort_on_failure: false)
|
|
66
|
-
run("BUNDLE_GEMFILE=\"#{destination_root}/Gemfile\" bundle update")
|
|
67
|
-
run("BUNDLE_GEMFILE=\"#{destination_root}/Gemfile\" bundle lock --add-platform x86_64-linux")
|
|
74
|
+
Dir.glob(File.join(destination_root, "hephaestus_*")).each do |file|
|
|
75
|
+
File.rename(file, file.gsub("hephaestus_", "."))
|
|
68
76
|
end
|
|
77
|
+
|
|
78
|
+
copy_file("root/hephaestus_env.sample", ".env")
|
|
69
79
|
end
|
|
70
80
|
end
|
|
71
81
|
|
|
@@ -87,109 +97,151 @@ module Hephaestus
|
|
|
87
97
|
|
|
88
98
|
def setup_development_environment
|
|
89
99
|
say(set_color("Setting up the development environment...", :cyan))
|
|
90
|
-
|
|
100
|
+
|
|
91
101
|
capture_stdout do
|
|
92
|
-
|
|
102
|
+
copy_file("config/environments/blank.rb", "config/environments/development.rb", force: true)
|
|
103
|
+
|
|
104
|
+
directory(Hephaestus.source_path("script"), "script")
|
|
105
|
+
|
|
106
|
+
chmod_dir("script")
|
|
93
107
|
end
|
|
94
108
|
end
|
|
95
109
|
|
|
96
110
|
def setup_staging_environment
|
|
97
111
|
say(set_color("Setting up the staging environment...", :cyan))
|
|
98
|
-
|
|
112
|
+
|
|
99
113
|
capture_stdout do
|
|
114
|
+
copy_file("config/environments/blank.rb", "config/environments/staging.rb", force: true)
|
|
100
115
|
end
|
|
101
116
|
end
|
|
102
117
|
|
|
103
118
|
def setup_production_environment
|
|
104
119
|
say(set_color("Setting up the production environment...", :cyan))
|
|
105
|
-
|
|
120
|
+
|
|
106
121
|
capture_stdout do
|
|
122
|
+
copy_file("config/environments/blank.rb", "config/environments/production.rb", force: true)
|
|
107
123
|
end
|
|
108
124
|
end
|
|
109
125
|
|
|
110
126
|
def setup_test_environment
|
|
111
127
|
say(set_color("Setting up the test environment...", :cyan))
|
|
112
|
-
|
|
128
|
+
|
|
129
|
+
capture_stdout do
|
|
130
|
+
copy_file("config/environments/blank.rb", "config/environments/test.rb", force: true)
|
|
131
|
+
end
|
|
113
132
|
end
|
|
114
133
|
|
|
115
134
|
def configure_app
|
|
116
135
|
say(set_color("Configuring app...", :cyan))
|
|
117
136
|
|
|
118
137
|
capture_stdout do
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
138
|
+
# This must be here, rather than a generator, because generators are run in a Rails environment,
|
|
139
|
+
# and the bootup process requires the fake PEM key file to be present.
|
|
140
|
+
# we do this to specify the template source, otherwise the generator wants to use its own `test` dir
|
|
141
|
+
source = File.join(Hephaestus::AppGenerator.source_root, "test")
|
|
142
|
+
directory(source, "test", force: true)
|
|
143
|
+
|
|
144
|
+
# This must be here, rather than a generator, because generators are run in a Rails environment,
|
|
145
|
+
# and the OpenAPI middleware, which is loaded when the app boots, requires the schema files to be present.
|
|
146
|
+
directory("lib/schemas/api/2023-03-06", "lib/schemas/api/2023-03-06")
|
|
126
147
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
directory(source, "test", force: true)
|
|
148
|
+
# we do this to specify the template source, otherwise the generator wants to use Rails own `bin` dir
|
|
149
|
+
source = File.join(Hephaestus::Engine.root, "templates", "bin")
|
|
150
|
+
directory(source, "bin", force: true)
|
|
151
|
+
chmod_dir("bin")
|
|
132
152
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
153
|
+
# we do this to specify the template source, otherwise the generator wants to use Rails' own dir
|
|
154
|
+
["controllers", "jobs", "services", "views"].each do |dir|
|
|
155
|
+
source = File.join(Hephaestus::Engine.root, "templates", "app", dir)
|
|
156
|
+
directory(source, "app/#{dir}", force: true)
|
|
157
|
+
end
|
|
138
158
|
|
|
139
|
-
|
|
140
|
-
source = File.join(Hephaestus::Engine.root, "templates", "bin")
|
|
141
|
-
directory(source, "bin", force: true)
|
|
159
|
+
directory("db", "db")
|
|
142
160
|
|
|
143
|
-
|
|
161
|
+
directory("vendor/fly", "vendor/fly")
|
|
144
162
|
|
|
145
|
-
|
|
146
|
-
generate("hephaestus:core")
|
|
163
|
+
directory("lib/tasks", "lib/tasks")
|
|
147
164
|
|
|
148
|
-
|
|
149
|
-
generate("hephaestus:deployment")
|
|
150
|
-
generate("hephaestus:lib")
|
|
165
|
+
remove_file("config/credentials.yml.enc")
|
|
151
166
|
|
|
152
167
|
# keep this at the end
|
|
153
|
-
|
|
168
|
+
directory("config", "config", force: true, exclude_pattern: /blank.rb/)
|
|
154
169
|
end
|
|
155
170
|
end
|
|
156
171
|
|
|
157
|
-
#
|
|
158
|
-
#
|
|
159
|
-
#
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
172
|
+
# Think of this as the final step in the process
|
|
173
|
+
# started by `hephaestus_generator`. All the relevant commands are run in the context of the
|
|
174
|
+
# new app directory.
|
|
175
|
+
def finalize
|
|
176
|
+
File.rename(File.join(destination_root, "app", "controllers", "app_controller.rb"), File.join(destination_root, "app", "controllers", "#{plug_name}_controller.rb"))
|
|
177
|
+
File.rename(File.join(destination_root, "app", "services", "app_service.rb"), File.join(destination_root, "app", "services", "#{plug_name}_service.rb"))
|
|
178
|
+
File.rename(File.join(destination_root, "test", "controllers", "app_controller_test.rb"), File.join(destination_root, "test", "controllers", "#{plug_name}_controller_test.rb"))
|
|
179
|
+
File.rename(File.join(destination_root, "test", "support", "webmocks", "app_webmock.rb"), File.join(destination_root, "test", "support", "webmocks", "#{plug_name}_webmock.rb"))
|
|
163
180
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
generate("hephaestus:license")
|
|
167
|
-
end
|
|
181
|
+
replace_in_file(File.join("lib", "schemas", "api", "2023-03-06", "openapi.json"), %r{paths/app.json}, "paths/#{plug_name}.json")
|
|
182
|
+
File.rename(File.join(destination_root, "lib", "schemas", "api", "2023-03-06", "paths", "app.json"), File.join(destination_root, "lib", "schemas", "api", "2023-03-06", "paths", "#{plug_name}.json"))
|
|
168
183
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
184
|
+
Dir.chdir(shell.base.result_dir) do
|
|
185
|
+
unless ENV.fetch("HEPHAESTUS_NO_EXTERNAL", "0") == "1"
|
|
186
|
+
say(set_color("Installing gems...", :cyan))
|
|
187
|
+
capture_stdout do
|
|
188
|
+
run("bundle install", abort_on_failure: false)
|
|
189
|
+
run("bundle update")
|
|
190
|
+
run("bundle lock --add-platform x86_64-linux")
|
|
191
|
+
end
|
|
192
|
+
end
|
|
173
193
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
194
|
+
result = nil
|
|
195
|
+
say(set_color("Generating `hephaestus:license`...", :cyan))
|
|
196
|
+
Bundler.with_unbundled_env do
|
|
197
|
+
capture_stdout do
|
|
198
|
+
capture_stderr do
|
|
199
|
+
result = run("script/licenses --update", quiet: true, abort_on_failure: false)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
178
203
|
|
|
179
|
-
|
|
180
|
-
|
|
204
|
+
unless result
|
|
205
|
+
say(set_color("Error generating licenses. When Hephaestus finishes executing, run `script/licenses --update`.", :red))
|
|
206
|
+
sleep(3)
|
|
207
|
+
end
|
|
181
208
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
209
|
+
# say(set_color("Generating `hephaestus:sorbet`...", :cyan))
|
|
210
|
+
# Bundler.with_unbundled_env do
|
|
211
|
+
# run("bundle exec tapioca init")
|
|
212
|
+
# run("bundle exec tapioca require")
|
|
213
|
+
# run("script/sorbet --update")
|
|
214
|
+
# end
|
|
215
|
+
|
|
216
|
+
say(set_color("Generating `hephaestus:rubocop`...", :cyan))
|
|
217
|
+
Bundler.with_unbundled_env do
|
|
218
|
+
capture_stdout do
|
|
219
|
+
capture_stderr do
|
|
220
|
+
result = run("bundle exec rubocop -A", abort_on_failure: false)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
186
224
|
|
|
187
|
-
|
|
225
|
+
unless result
|
|
226
|
+
say(set_color("Could not run Rubocop. When Hephaestus finishes executing, run `bundle exec rubocop -A`.", :red))
|
|
227
|
+
sleep(3)
|
|
228
|
+
end
|
|
229
|
+
end
|
|
188
230
|
end
|
|
189
231
|
|
|
190
|
-
def
|
|
191
|
-
|
|
192
|
-
|
|
232
|
+
def first_commit
|
|
233
|
+
say(set_color("Creating first commit...", :cyan))
|
|
234
|
+
|
|
235
|
+
Dir.chdir(shell.base.result_dir) do
|
|
236
|
+
capture_stdout do
|
|
237
|
+
run("git init")
|
|
238
|
+
run("git remote add origin https://github.com/yettoapp/#{app_name}.git")
|
|
239
|
+
run("git branch -m production")
|
|
240
|
+
|
|
241
|
+
run("git add .")
|
|
242
|
+
run("git commit -m 'Initial commit'", capture: true)
|
|
243
|
+
end
|
|
244
|
+
end
|
|
193
245
|
end
|
|
194
246
|
|
|
195
247
|
def outro
|
|
@@ -245,13 +297,46 @@ module Hephaestus
|
|
|
245
297
|
!options[:skip_active_record]
|
|
246
298
|
end
|
|
247
299
|
|
|
248
|
-
private def capture_stdout
|
|
249
|
-
|
|
250
|
-
|
|
300
|
+
private def capture_stdout(&block)
|
|
301
|
+
capture_stream("stdout", &block)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
private def capture_stderr(&block)
|
|
305
|
+
capture_stream("stderr", &block)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
private def capture_stream(stream)
|
|
309
|
+
captured_stream = Tempfile.new(stream)
|
|
310
|
+
stream_io = eval("$#{stream}", binding, __FILE__, __LINE__) # rubocop:disable Security/Eval
|
|
311
|
+
origin_stream = stream_io.dup
|
|
312
|
+
stream_io.reopen(captured_stream)
|
|
313
|
+
|
|
251
314
|
yield
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
315
|
+
|
|
316
|
+
stream_io.rewind
|
|
317
|
+
captured_stream.read
|
|
318
|
+
|
|
319
|
+
unless captured_stream.nil?
|
|
320
|
+
captured_stream.close
|
|
321
|
+
captured_stream.unlink
|
|
322
|
+
end
|
|
323
|
+
stream_io.reopen(origin_stream) unless stream_io.nil?
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
private def chmod_dir(dir)
|
|
327
|
+
Dir.glob(File.join(destination_root, dir, "**", "*")).each do |file|
|
|
328
|
+
next if File.directory?(file)
|
|
329
|
+
|
|
330
|
+
# Rails adds this
|
|
331
|
+
if file == ".keep"
|
|
332
|
+
remove_file(file)
|
|
333
|
+
next
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
# this is because we might have *.tt templates, which aren't executable,
|
|
337
|
+
# so we gotta re-execute-em all
|
|
338
|
+
chmod(file, 0o755)
|
|
339
|
+
end
|
|
255
340
|
end
|
|
256
341
|
end
|
|
257
342
|
end
|
|
@@ -32,14 +32,6 @@ module Hephaestus
|
|
|
32
32
|
|
|
33
33
|
private
|
|
34
34
|
|
|
35
|
-
def app_name
|
|
36
|
-
Rails.app_class.module_parent_name.demodulize.underscore.dasherize
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def short_app_name
|
|
40
|
-
app_name.sub(/plug-/i, "")
|
|
41
|
-
end
|
|
42
|
-
|
|
43
35
|
def empty_directory_with_keep_file(destination)
|
|
44
36
|
empty_directory(destination, {})
|
|
45
37
|
keep_file(destination)
|
data/lib/hephaestus/version.rb
CHANGED
data/lib/hephaestus.rb
CHANGED
|
@@ -8,24 +8,17 @@ def debugging?
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
require "debug" if debugging?
|
|
11
|
+
require "amazing_print" if debugging?
|
|
11
12
|
|
|
12
13
|
require "hephaestus/version"
|
|
13
14
|
require "hephaestus/engine"
|
|
14
15
|
|
|
15
16
|
require "hephaestus/generators/app_generator"
|
|
16
|
-
require "hephaestus/generators/config_generator"
|
|
17
|
-
require "hephaestus/generators/core_generator"
|
|
18
|
-
require "hephaestus/generators/db_generator"
|
|
19
|
-
require "hephaestus/generators/deployment_generator"
|
|
20
|
-
require "hephaestus/generators/lib_generator"
|
|
21
|
-
require "hephaestus/generators/license_generator"
|
|
22
|
-
require "hephaestus/generators/rubocop_generator"
|
|
23
|
-
require "hephaestus/generators/sorbet_generator"
|
|
24
17
|
|
|
25
18
|
require "hephaestus/actions"
|
|
26
19
|
require "hephaestus/app_name"
|
|
20
|
+
|
|
27
21
|
require "hephaestus/actions/strip_comments_action"
|
|
28
|
-
require "hephaestus/app_builder"
|
|
29
22
|
|
|
30
23
|
module Hephaestus
|
|
31
24
|
class << self
|
data/templates/bin/bundle
CHANGED
|
@@ -13,10 +13,6 @@ gem "hephaestus", "~> 0.8"
|
|
|
13
13
|
|
|
14
14
|
# !!! TODO: put your platform's dependencies here !!!
|
|
15
15
|
|
|
16
|
-
# the one and only
|
|
17
|
-
gem "octokit", "~> 9.1"
|
|
18
|
-
gem "faraday-retry", "~> 2.2"
|
|
19
|
-
|
|
20
16
|
group :development, :test do
|
|
21
17
|
# better debug output with `ap`
|
|
22
18
|
gem "amazing_print"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# Ignore git directory.
|
|
4
|
+
/.git/
|
|
5
|
+
|
|
6
|
+
# Ignore bundler config.
|
|
7
|
+
/.bundle
|
|
8
|
+
|
|
9
|
+
# Ignore all environment files (except templates).
|
|
10
|
+
/.env*
|
|
11
|
+
!/.env*.erb
|
|
12
|
+
|
|
13
|
+
# Ignore all default key files.
|
|
14
|
+
/config/master.key
|
|
15
|
+
/config/credentials/*.key
|
|
16
|
+
|
|
17
|
+
# Ignore all logfiles and tempfiles.
|
|
18
|
+
/log/*
|
|
19
|
+
/tmp/*
|
|
20
|
+
!/log/.keep
|
|
21
|
+
!/tmp/.keep
|
|
22
|
+
|
|
23
|
+
# Ignore pidfiles, but keep the directory.
|
|
24
|
+
/tmp/pids/*
|
|
25
|
+
!/tmp/pids/.keep
|
|
26
|
+
|
|
27
|
+
# Ignore storage (uploaded files in development and any SQLite databases).
|
|
28
|
+
/storage/*
|
|
29
|
+
!/storage/.keep
|
|
30
|
+
/tmp/storage/*
|
|
31
|
+
!/tmp/storage/.keep
|
|
32
|
+
|
|
33
|
+
# Ignore assets.
|
|
34
|
+
/node_modules/
|
|
35
|
+
/app/assets/builds/*
|
|
36
|
+
!/app/assets/builds/.keep
|
|
37
|
+
/public/assets
|
|
38
|
+
|
|
39
|
+
# Use the one in the base Dockerfile
|
|
40
|
+
.ruby-version
|
|
41
|
+
|
|
42
|
+
security-results.json
|
|
43
|
+
coverage/
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
cache_path: vendor/.licenses
|
|
2
|
+
|
|
3
|
+
allowed:
|
|
4
|
+
- apache-2.0
|
|
5
|
+
- bsd-2-clause
|
|
6
|
+
- bsd-3-clause
|
|
7
|
+
- isc
|
|
8
|
+
- mit
|
|
9
|
+
- cc0-1.0
|
|
10
|
+
- unlicense
|
|
11
|
+
|
|
12
|
+
ignored:
|
|
13
|
+
bundler:
|
|
14
|
+
- base64 # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
15
|
+
- benchmark # BSD-2-Clause
|
|
16
|
+
- bigdecimal # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
17
|
+
- bundler-audit # GPL-3.0; but also, only used in CI/test
|
|
18
|
+
- drb # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
19
|
+
- io-console # BSD-2-Clause
|
|
20
|
+
- logger # BSD-2-Clause
|
|
21
|
+
- mutex_m # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
22
|
+
- reline # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
23
|
+
- rdoc # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
24
|
+
- ruby2_keywords # BSD-2-Clause; ignored because of custom LICENSE text
|
|
25
|
+
- securerandom # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
26
|
+
- sidekiq # LGPL-3.0; ignored because of custom LICENSE text
|
|
27
|
+
- stringio # BSD-2-Clause ("This file is released under the same license as ruby.")
|
|
28
|
+
- uri # BSD-2-Clause
|
|
29
|
+
|
|
30
|
+
reviewed:
|
|
31
|
+
bundler:
|
|
32
|
+
- activerecord # MIT
|
|
33
|
+
- brakeman # BRAKEMAN PUBLIC USE LICENSE
|
|
34
|
+
- bundler # MIT
|
|
35
|
+
- concurrent-ruby # MIT
|
|
36
|
+
- date # BSD-2-Clause
|
|
37
|
+
- dry-core # MIT
|
|
38
|
+
- dry-transformer # MIT
|
|
39
|
+
- exponential-backoff # MIT
|
|
40
|
+
- faraday-net_http # MIT
|
|
41
|
+
- json # BSD-2-Clause
|
|
42
|
+
- jwt # MIT
|
|
43
|
+
- net-http # BSD-2-Clause
|
|
44
|
+
- net-imap # BSD-2-Clause
|
|
45
|
+
- net-pop # BSD-2-Clause
|
|
46
|
+
- net-protocol # BSD-2-Clause
|
|
47
|
+
- net-smtp # BSD-2-Clause
|
|
48
|
+
- nio4r # MIT
|
|
49
|
+
- parser # MIT
|
|
50
|
+
- pg # BSD-2-Clause
|
|
51
|
+
- racc # BSD-2-Clause
|
|
52
|
+
- timeout # BSD-2-Clause
|
|
53
|
+
- unf # BSD-2-Clause
|
|
54
|
+
- websocket-driver # Apache-2.0
|
|
55
|
+
- websocket-extensions # Apache-2.0
|
|
56
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.3.6
|
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.8.12.
|
|
4
|
+
version: 0.8.12.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Garen Torikian
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-12-
|
|
11
|
+
date: 2024-12-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bootsnap
|
|
@@ -427,19 +427,10 @@ files:
|
|
|
427
427
|
- lib/hephaestus.rb
|
|
428
428
|
- lib/hephaestus/actions.rb
|
|
429
429
|
- lib/hephaestus/actions/strip_comments_action.rb
|
|
430
|
-
- lib/hephaestus/app_builder.rb
|
|
431
430
|
- lib/hephaestus/app_name.rb
|
|
432
431
|
- lib/hephaestus/engine.rb
|
|
433
432
|
- lib/hephaestus/generators/app_generator.rb
|
|
434
433
|
- lib/hephaestus/generators/base.rb
|
|
435
|
-
- lib/hephaestus/generators/config_generator.rb
|
|
436
|
-
- lib/hephaestus/generators/core_generator.rb
|
|
437
|
-
- lib/hephaestus/generators/db_generator.rb
|
|
438
|
-
- lib/hephaestus/generators/deployment_generator.rb
|
|
439
|
-
- lib/hephaestus/generators/lib_generator.rb
|
|
440
|
-
- lib/hephaestus/generators/license_generator.rb
|
|
441
|
-
- lib/hephaestus/generators/rubocop_generator.rb
|
|
442
|
-
- lib/hephaestus/generators/sorbet_generator.rb
|
|
443
434
|
- lib/hephaestus/http.rb
|
|
444
435
|
- lib/hephaestus/middleware.rb
|
|
445
436
|
- lib/hephaestus/middleware/malformed_request.rb
|
|
@@ -454,11 +445,6 @@ files:
|
|
|
454
445
|
- lib/hephaestus/version.rb
|
|
455
446
|
- lib/tasks/hephaestus_tasks.rake
|
|
456
447
|
- lib/tasks/rubocop.rake
|
|
457
|
-
- lib/version.rb
|
|
458
|
-
- templates/Dockerfile
|
|
459
|
-
- templates/Gemfile
|
|
460
|
-
- templates/Procfile
|
|
461
|
-
- templates/README.md.erb
|
|
462
448
|
- templates/app/controllers/app_controller.rb.tt
|
|
463
449
|
- templates/app/controllers/application_controller.rb
|
|
464
450
|
- templates/app/controllers/concerns/authable.rb.tt
|
|
@@ -479,7 +465,6 @@ files:
|
|
|
479
465
|
- templates/bin/rake
|
|
480
466
|
- templates/bin/setup
|
|
481
467
|
- templates/bin/tapioca
|
|
482
|
-
- templates/config.ru
|
|
483
468
|
- templates/config/application.rb.tt
|
|
484
469
|
- templates/config/boot.rb
|
|
485
470
|
- templates/config/environment.rb
|
|
@@ -491,7 +476,6 @@ files:
|
|
|
491
476
|
- templates/config/routes.rb.tt
|
|
492
477
|
- templates/db/queue_schema.rb
|
|
493
478
|
- templates/db/schema.rb
|
|
494
|
-
- templates/hephaestus_env.sample
|
|
495
479
|
- templates/hephaestus_github/dependabot.yml
|
|
496
480
|
- templates/hephaestus_github/workflows/automerge.yml
|
|
497
481
|
- templates/hephaestus_github/workflows/deploy.yml
|
|
@@ -501,7 +485,6 @@ files:
|
|
|
501
485
|
- templates/hephaestus_github/workflows/sorbet.yml
|
|
502
486
|
- templates/hephaestus_github/workflows/test.yml.tt
|
|
503
487
|
- templates/hephaestus_github/workflows/updater.yml
|
|
504
|
-
- templates/hephaestus_gitignore
|
|
505
488
|
- templates/hephaestus_vscode/extensions.json
|
|
506
489
|
- templates/hephaestus_vscode/launch.json
|
|
507
490
|
- templates/hephaestus_vscode/settings.json
|
|
@@ -524,6 +507,19 @@ files:
|
|
|
524
507
|
- templates/lib/schemas/api/2023-03-06/paths/yetto/message_created.json
|
|
525
508
|
- templates/lib/schemas/api/2023-03-06/paths/yetto/plug_installation_created.json
|
|
526
509
|
- templates/lib/tasks/test_tasks.rake
|
|
510
|
+
- templates/root/Dockerfile
|
|
511
|
+
- templates/root/Gemfile
|
|
512
|
+
- templates/root/Procfile
|
|
513
|
+
- templates/root/README.md.tt
|
|
514
|
+
- templates/root/compose.yml
|
|
515
|
+
- templates/root/config.ru
|
|
516
|
+
- templates/root/hephaestus_dockerignore
|
|
517
|
+
- templates/root/hephaestus_env.sample
|
|
518
|
+
- templates/root/hephaestus_gitattributes
|
|
519
|
+
- templates/root/hephaestus_gitignore
|
|
520
|
+
- templates/root/hephaestus_licensed.yml
|
|
521
|
+
- templates/root/hephaestus_rubocop.yml
|
|
522
|
+
- templates/root/hephaestus_ruby-version
|
|
527
523
|
- templates/script/ci
|
|
528
524
|
- templates/script/docker-build-prod.tt
|
|
529
525
|
- templates/script/docker-run.tt
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require "forwardable"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class AppBuilder < ::Rails::AppBuilder
|
|
8
|
-
include Hephaestus::Actions
|
|
9
|
-
|
|
10
|
-
extend Forwardable
|
|
11
|
-
|
|
12
|
-
def readme
|
|
13
|
-
template("README.md.erb", "README.md")
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def gitignore
|
|
17
|
-
copy_file("hephaestus_gitignore", ".gitignore")
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def setup_dev_environment
|
|
21
|
-
copy_file("config/environments/blank.rb", "config/environments/development.rb", force: true)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def copy_setup_scripts
|
|
25
|
-
directory(Hephaestus.source_path("script"), "script")
|
|
26
|
-
Dir.glob("script/**/*").each do |file|
|
|
27
|
-
next if File.directory?(file)
|
|
28
|
-
|
|
29
|
-
# Rails adds this
|
|
30
|
-
if file == ".keep"
|
|
31
|
-
remove_file(file)
|
|
32
|
-
next
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# this is because we might have *.tt templates, which aren't executable,
|
|
36
|
-
# so we gotta re-execute-em all
|
|
37
|
-
chmod(file, 0o755)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def setup_staging_environment
|
|
42
|
-
copy_file("config/environments/blank.rb", "config/environments/staging.rb", force: true)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def setup_production_environment
|
|
46
|
-
copy_file("config/environments/blank.rb", "config/environments/production.rb", force: true)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def setup_test_environment
|
|
50
|
-
copy_file("config/environments/blank.rb", "config/environments/test.rb", force: true)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def ruby_version
|
|
54
|
-
create_file(".ruby-version", "#{Hephaestus::RUBY_VERSION}\n")
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def replace_generic_variables
|
|
58
|
-
say(set_color("Replacing generic file names...", :cyan))
|
|
59
|
-
|
|
60
|
-
File.rename(File.join(destination_root, "app", "controllers", "app_controller.rb"), File.join(destination_root, "app", "controllers", "#{plug_name}_controller.rb"))
|
|
61
|
-
File.rename(File.join(destination_root, "app", "services", "app_service.rb"), File.join(destination_root, "app", "services", "#{plug_name}_service.rb"))
|
|
62
|
-
File.rename(File.join(destination_root, "test", "controllers", "app_controller_test.rb"), File.join(destination_root, "test", "controllers", "#{plug_name}_controller_test.rb"))
|
|
63
|
-
File.rename(File.join(destination_root, "test", "support", "webmocks", "app_webmock.rb"), File.join(destination_root, "test", "support", "webmocks", "#{plug_name}_webmock.rb"))
|
|
64
|
-
|
|
65
|
-
replace_in_file(File.join("lib", "schemas", "api", "2023-03-06", "openapi.json"), %r{app/paths.json}, "#{plug_name}/paths.json")
|
|
66
|
-
File.rename(File.join(destination_root, "lib", "schemas", "api", "2023-03-06", "paths", "app.json"), File.join(destination_root, "lib", "schemas", "api", "2023-03-06", "paths", "#{plug_name}.json"))
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
def root_path
|
|
72
|
-
@root_path ||= Pathname(__dir__).join("..", "..").expand_path
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def development_env?
|
|
76
|
-
root_path.join("hephaestus.gemspec").exist?
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class ConfigGenerator < Generators::Base
|
|
8
|
-
include Hephaestus::AppName
|
|
9
|
-
|
|
10
|
-
def config_application
|
|
11
|
-
directory("config", "config", force: true, exclude_pattern: /blank.rb/)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def credentials
|
|
15
|
-
remove_file("config/credentials.yml.enc")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
# require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class CoreGenerator < Generators::Base
|
|
8
|
-
include Hephaestus::AppName
|
|
9
|
-
|
|
10
|
-
def gemfile
|
|
11
|
-
# we do this to specify the template source, otherwise the generator wants to use Rails own `controllers` dir
|
|
12
|
-
source = File.join(Hephaestus::Engine.root, "templates", "Gemfile")
|
|
13
|
-
copy_file(source, "Gemfile", force: true)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def controllers
|
|
17
|
-
# we do this to specify the template source, otherwise the generator wants to use Rails own `controllers` dir
|
|
18
|
-
source = File.join(Hephaestus::Engine.root, "templates", "app", "controllers")
|
|
19
|
-
directory(source, "app/controllers", force: true)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def jobs
|
|
23
|
-
# we do this to specify the template source, otherwise the generator wants to use Rails own `jobs` dir
|
|
24
|
-
source = File.join(Hephaestus::Engine.root, "templates", "app", "jobs")
|
|
25
|
-
directory(source, "app/jobs", force: true)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def services
|
|
29
|
-
source = File.join(Hephaestus::Engine.root, "templates", "app", "services")
|
|
30
|
-
directory(source, "app/services", force: true)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def views
|
|
34
|
-
source = File.join(Hephaestus::Engine.root, "templates", "app", "views")
|
|
35
|
-
directory(source, "app/views", force: true)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class DeploymentGenerator < Generators::Base
|
|
8
|
-
def procfile
|
|
9
|
-
copy_file("Procfile", "Procfile")
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def dotenv
|
|
13
|
-
copy_file("hephaestus_env.sample", ".env")
|
|
14
|
-
copy_file("hephaestus_env.sample", ".env.sample")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def docker
|
|
18
|
-
copy_file("Dockerfile", "Dockerfile")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def fly
|
|
22
|
-
directory("vendor/fly", "vendor/fly")
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class LicenseGenerator < Generators::Base
|
|
8
|
-
def licensed
|
|
9
|
-
copy_file(".licensed.yml", ".licensed.yml")
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def generate_licenses
|
|
13
|
-
unless run("script/licenses --update", abort_on_failure: false)
|
|
14
|
-
say(set_color("Error generating licenses. When this is all over, run `script/licenses --update`.", :red))
|
|
15
|
-
sleep(3)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class RubocopGenerator < Generators::Base
|
|
8
|
-
def rubocop
|
|
9
|
-
copy_file(".rubocop.yml", ".rubocop.yml", force: true)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def lint
|
|
13
|
-
Bundler.with_unbundled_env do
|
|
14
|
-
run("bundle exec rubocop -A", abort_on_failure: false)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require_relative "base"
|
|
5
|
-
|
|
6
|
-
module Hephaestus
|
|
7
|
-
class SorbetGenerator < Generators::Base
|
|
8
|
-
def sorbet
|
|
9
|
-
copy_file("sorbet/custom.rbi", "sorbet/custom.rbi")
|
|
10
|
-
Bundler.with_unbundled_env do
|
|
11
|
-
run("bundle exec tapioca init")
|
|
12
|
-
run("bundle exec tapioca require")
|
|
13
|
-
run("script/sorbet --update")
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
data/lib/version.rb
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|