hanami-cli 2.0.0 → 2.1.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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -0
  3. data/{.action_hero.yml → .repobot.yml} +1 -3
  4. data/.rubocop.yml +6 -0
  5. data/CHANGELOG.md +115 -0
  6. data/Gemfile +7 -2
  7. data/LICENSE.md +1 -1
  8. data/README.md +1 -1
  9. data/hanami-cli.gemspec +1 -1
  10. data/lib/hanami/cli/bundler.rb +26 -9
  11. data/lib/hanami/cli/command.rb +28 -6
  12. data/lib/hanami/cli/commands/app/assets/command.rb +155 -0
  13. data/lib/hanami/cli/commands/app/assets/compile.rb +35 -0
  14. data/lib/hanami/cli/commands/app/assets/watch.rb +29 -0
  15. data/lib/hanami/cli/commands/app/assets.rb +16 -0
  16. data/lib/hanami/cli/commands/app/command.rb +5 -3
  17. data/lib/hanami/cli/commands/app/db/rollback.rb +30 -6
  18. data/lib/hanami/cli/commands/app/db/utils/database.rb +5 -1
  19. data/lib/hanami/cli/commands/app/dev.rb +50 -0
  20. data/lib/hanami/cli/commands/app/generate/action.rb +38 -9
  21. data/lib/hanami/cli/commands/app/generate/part.rb +57 -0
  22. data/lib/hanami/cli/commands/app/generate/slice.rb +6 -3
  23. data/lib/hanami/cli/commands/app/generate/view.rb +56 -0
  24. data/lib/hanami/cli/commands/app/generate.rb +2 -2
  25. data/lib/hanami/cli/commands/app/install.rb +16 -1
  26. data/lib/hanami/cli/commands/app/server.rb +6 -10
  27. data/lib/hanami/cli/commands/app.rb +10 -0
  28. data/lib/hanami/cli/commands/gem/new.rb +70 -12
  29. data/lib/hanami/cli/errors.rb +30 -0
  30. data/lib/hanami/cli/files.rb +8 -2
  31. data/lib/hanami/cli/generators/app/action/action.erb +5 -1
  32. data/lib/hanami/cli/generators/app/action/slice_action.erb +5 -1
  33. data/lib/hanami/cli/generators/app/action/slice_template.html.erb +1 -0
  34. data/lib/hanami/cli/generators/app/action/slice_view.erb +10 -0
  35. data/lib/hanami/cli/generators/app/action/template.html.erb +1 -2
  36. data/lib/hanami/cli/generators/app/action/view.erb +2 -5
  37. data/lib/hanami/cli/generators/app/action.rb +74 -22
  38. data/lib/hanami/cli/generators/app/action_context.rb +1 -1
  39. data/lib/hanami/cli/generators/app/part/app_base_part.erb +9 -0
  40. data/lib/hanami/cli/generators/app/part/app_part.erb +13 -0
  41. data/lib/hanami/cli/generators/app/part/slice_base_part.erb +9 -0
  42. data/lib/hanami/cli/generators/app/part/slice_part.erb +13 -0
  43. data/lib/hanami/cli/generators/app/part.rb +101 -0
  44. data/lib/hanami/cli/generators/app/part_context.rb +98 -0
  45. data/lib/hanami/cli/generators/app/slice/app_css.erb +5 -0
  46. data/lib/hanami/cli/generators/app/slice/app_js.erb +1 -0
  47. data/lib/hanami/cli/generators/app/slice/app_layout.erb +18 -0
  48. data/lib/hanami/cli/generators/app/slice/favicon.ico +0 -0
  49. data/lib/hanami/cli/generators/app/slice/helpers.erb +10 -0
  50. data/lib/hanami/cli/generators/app/slice/view.erb +0 -2
  51. data/lib/hanami/cli/generators/app/slice.rb +20 -6
  52. data/lib/hanami/cli/generators/app/slice_context.rb +18 -0
  53. data/lib/hanami/cli/generators/app/view/app_template.html.erb +1 -0
  54. data/lib/hanami/cli/generators/app/view/app_view.erb +10 -0
  55. data/lib/hanami/cli/generators/app/view/slice_template.html.erb +1 -0
  56. data/lib/hanami/cli/generators/app/view/slice_view.erb +10 -0
  57. data/lib/hanami/cli/generators/app/view.rb +89 -0
  58. data/lib/hanami/cli/generators/app/view_context.rb +100 -0
  59. data/lib/hanami/cli/generators/context.rb +72 -5
  60. data/lib/hanami/cli/generators/gem/app/404.html +82 -0
  61. data/lib/hanami/cli/generators/gem/app/500.html +82 -0
  62. data/lib/hanami/cli/generators/gem/app/app_css.erb +5 -0
  63. data/lib/hanami/cli/generators/gem/app/app_js.erb +1 -0
  64. data/lib/hanami/cli/generators/gem/app/app_layout.erb +18 -0
  65. data/lib/hanami/cli/generators/gem/app/assets.js +16 -0
  66. data/lib/hanami/cli/generators/gem/app/dev +8 -0
  67. data/lib/hanami/cli/generators/gem/app/favicon.ico +0 -0
  68. data/lib/hanami/cli/generators/gem/app/gemfile.erb +14 -6
  69. data/lib/hanami/cli/generators/gem/app/gitignore.erb +6 -0
  70. data/lib/hanami/cli/generators/gem/app/helpers.erb +10 -0
  71. data/lib/hanami/cli/generators/gem/app/package.json.erb +8 -0
  72. data/lib/hanami/cli/generators/gem/app/procfile.erb +4 -0
  73. data/lib/hanami/cli/generators/gem/app/puma.erb +39 -7
  74. data/lib/hanami/cli/generators/gem/app/routes.erb +1 -1
  75. data/lib/hanami/cli/generators/gem/app/view.erb +9 -0
  76. data/lib/hanami/cli/generators/gem/app.rb +25 -1
  77. data/lib/hanami/cli/generators/version.rb +14 -2
  78. data/lib/hanami/cli/interactive_system_call.rb +65 -0
  79. data/lib/hanami/cli/naming.rb +25 -0
  80. data/lib/hanami/cli/system_call.rb +8 -2
  81. data/lib/hanami/cli/url.rb +1 -1
  82. data/lib/hanami/cli/version.rb +1 -1
  83. metadata +47 -6
@@ -0,0 +1,10 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ module <%= camelized_app_name %>
5
+ module Views
6
+ module Helpers
7
+ # Add your view helpers here
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "<%= underscored_app_name %>",
3
+ "private": true,
4
+ "type": "module",
5
+ "dependencies": {
6
+ <%= hanami_assets_npm_package %>
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ web: bundle exec hanami server
2
+ <%- if generate_assets? -%>
3
+ assets: bundle exec hanami assets watch
4
+ <%- end -%>
@@ -1,15 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #
4
+ # Environment and port
5
+ #
6
+ port ENV.fetch("<%= Hanami::Port::ENV_VAR %>", <%= Hanami::Port::DEFAULT %>)
7
+ environment ENV.fetch("HANAMI_ENV", "development")
8
+
9
+ #
10
+ # Threads within each Puma/Ruby process (aka worker)
11
+ #
12
+
13
+ # Configure the minimum and maximum number of threads to use to answer requests.
3
14
  max_threads_count = ENV.fetch("HANAMI_MAX_THREADS", 5)
4
15
  min_threads_count = ENV.fetch("HANAMI_MIN_THREADS") { max_threads_count }
16
+
5
17
  threads min_threads_count, max_threads_count
6
18
 
7
- port ENV.fetch("HANAMI_PORT", 2300)
8
- environment ENV.fetch("HANAMI_ENV", "development")
9
- workers ENV.fetch("HANAMI_WEB_CONCURRENCY", 2)
19
+ #
20
+ # Workers (aka Puma/Ruby processes)
21
+ #
10
22
 
11
- on_worker_boot do
12
- Hanami.shutdown
13
- end
23
+ puma_concurrency = Integer(ENV.fetch("HANAMI_WEB_CONCURRENCY", 0))
24
+ puma_cluster_mode = puma_concurrency > 1
25
+
26
+ # How many worker (Puma/Ruby) processes to run.
27
+ # Typically this is set to the number of available cores.
28
+ workers puma_concurrency
29
+
30
+ #
31
+ # Cluster mode (aka multiple workers)
32
+ #
14
33
 
15
- preload_app!
34
+ if puma_cluster_mode
35
+ # Preload the application before starting the workers. Only in cluster mode.
36
+ preload_app!
37
+
38
+ # Code to run immediately before master process forks workers (once on boot).
39
+ #
40
+ # These hooks can block if necessary to wait for background operations unknown
41
+ # to puma to finish before the process terminates. This can be used to close
42
+ # any connections to remote servers (database, redis, …) that were opened when
43
+ # preloading the code.
44
+ before_fork do
45
+ Hanami.shutdown
46
+ end
47
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module <%= camelized_app_name %>
4
4
  class Routes < Hanami::Routes
5
- root { "Hello from Hanami" }
5
+ # Add your routes here. See https://guides.hanamirb.org/routing/overview/ for details.
6
6
  end
7
7
  end
@@ -0,0 +1,9 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ require "hanami/view"
5
+
6
+ module <%= camelized_app_name %>
7
+ class View < Hanami::View
8
+ end
9
+ end
@@ -34,13 +34,18 @@ module Hanami
34
34
  attr_reader :inflector
35
35
 
36
36
  def generate_app(app, context) # rubocop:disable Metrics/AbcSize
37
+ fs.write(".gitignore", t("gitignore.erb", context))
37
38
  fs.write(".env", t("env.erb", context))
38
39
 
39
40
  fs.write("README.md", t("readme.erb", context))
40
41
  fs.write("Gemfile", t("gemfile.erb", context))
41
42
  fs.write("Rakefile", t("rakefile.erb", context))
43
+ fs.write("Procfile.dev", t("procfile.erb", context))
42
44
  fs.write("config.ru", t("config_ru.erb", context))
43
45
 
46
+ fs.write("bin/dev", file("dev"))
47
+ fs.chmod("bin/dev", 0o755)
48
+
44
49
  fs.write("config/app.rb", t("app.erb", context))
45
50
  fs.write("config/settings.rb", t("settings.erb", context))
46
51
  fs.write("config/routes.rb", t("routes.erb", context))
@@ -51,17 +56,36 @@ module Hanami
51
56
 
52
57
  fs.write("app/actions/.keep", t("keep.erb", context))
53
58
  fs.write("app/action.rb", t("action.erb", context))
59
+ fs.write("app/view.rb", t("view.erb", context))
60
+ fs.write("app/views/helpers.rb", t("helpers.erb", context))
61
+ fs.write("app/templates/layouts/app.html.erb", t("app_layout.erb", context))
62
+
63
+ if context.generate_assets?
64
+ fs.write("package.json", t("package.json.erb", context))
65
+ fs.write("config/assets.js", file("assets.js"))
66
+ fs.write("app/assets/js/app.js", t("app_js.erb", context))
67
+ fs.write("app/assets/css/app.css", t("app_css.erb", context))
68
+ fs.write("app/assets/images/favicon.ico", file("favicon.ico"))
69
+ end
70
+
71
+ fs.write("public/404.html", file("404.html"))
72
+ fs.write("public/500.html", file("500.html"))
54
73
  end
55
74
 
56
75
  def template(path, context)
57
76
  require "erb"
58
77
 
59
78
  ERB.new(
60
- File.read(File.join(__dir__, "app", path))
79
+ File.read(File.join(__dir__, "app", path)),
80
+ trim_mode: "-"
61
81
  ).result(context.ctx)
62
82
  end
63
83
 
64
84
  alias_method :t, :template
85
+
86
+ def file(path)
87
+ File.read(File.join(__dir__, "app", path))
88
+ end
65
89
  end
66
90
  end
67
91
  end
@@ -9,7 +9,7 @@ module Hanami
9
9
  # @since 2.0.0
10
10
  # @api private
11
11
  def self.version
12
- return Hanami::VERSION if defined?(Hanami::VERSION)
12
+ return Hanami::VERSION if Hanami.const_defined?(:VERSION)
13
13
 
14
14
  Hanami::CLI::VERSION
15
15
  end
@@ -26,10 +26,22 @@ module Hanami
26
26
  "~> #{result}"
27
27
  end
28
28
 
29
+ def self.npm_package_requirement
30
+ result = version
31
+ # Change "2.1.0.beta2.1" to "2.1.0-beta.2" (the only format tolerable by `npm install`)
32
+ if prerelease?
33
+ result = result
34
+ .sub(/\.(alpha|beta|rc)/, '-\1')
35
+ .sub(/(alpha|beta|rc)(\d+)(?:\.\d+)?\Z/, '\1.\2')
36
+ end
37
+
38
+ "^#{result}"
39
+ end
40
+
29
41
  # @since 2.0.0
30
42
  # @api private
31
43
  def self.prerelease?
32
- version =~ /alpha|beta|rc/
44
+ version.match?(/alpha|beta|rc/)
33
45
  end
34
46
 
35
47
  # @example
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "open3"
4
+
5
+ module Hanami
6
+ module CLI
7
+ # @api private
8
+ # @since 2.1.0
9
+ class InteractiveSystemCall
10
+ # @api private
11
+ # @since 2.1.0
12
+ def initialize(out: $stdout, err: $stderr, exit_after: true)
13
+ @out = out
14
+ @err = err
15
+ @exit_after = exit_after
16
+ super()
17
+ end
18
+
19
+ # @api private
20
+ # @since 2.1.0
21
+ def call(cmd, *args, env: {}, out_prefix: "")
22
+ ::Bundler.with_unbundled_env do
23
+ threads = []
24
+ exit_status = 0
25
+
26
+ # rubocop:disable Lint/SuppressedException
27
+ Open3.popen3(env, command(cmd, *args)) do |_stdin, stdout, stderr, wait_thr|
28
+ threads << Thread.new do
29
+ stdout.each_line do |line|
30
+ out.puts("#{out_prefix}#{line}")
31
+ end
32
+ rescue IOError # FIXME: Check if this is legit
33
+ end
34
+
35
+ threads << Thread.new do
36
+ stderr.each_line do |line|
37
+ err.puts("#{out_prefix}#{line}")
38
+ end
39
+ rescue IOError # FIXME: Check if this is legit
40
+ end
41
+
42
+ threads.each(&:join)
43
+
44
+ exit_status = wait_thr.value
45
+ end
46
+ # rubocop:enable Lint/SuppressedException
47
+
48
+ exit(exit_status.exitstatus) if @exit_after
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ # @api private
55
+ # @since 2.1.0
56
+ attr_reader :out, :err
57
+
58
+ # @since 2.1.0
59
+ # @api public
60
+ def command(cmd, *args)
61
+ [cmd, args].flatten(1).compact.join(" ")
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "shellwords"
4
+
5
+ module Hanami
6
+ module CLI
7
+ class Naming
8
+ def initialize(inflector:)
9
+ @inflector = inflector
10
+ end
11
+
12
+ def action_name(name)
13
+ inflector.underscore(escape(name)).gsub("/", ".")
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :inflector
19
+
20
+ def escape(name)
21
+ Shellwords.shellescape(name)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -85,13 +85,13 @@ module Hanami
85
85
  #
86
86
  # @since 2.0.0
87
87
  # @api public
88
- def call(cmd, env: {})
88
+ def call(cmd, *args, env: {})
89
89
  exitstatus = nil
90
90
  out = nil
91
91
  err = nil
92
92
 
93
93
  ::Bundler.with_unbundled_env do
94
- Open3.popen3(env, cmd) do |stdin, stdout, stderr, wait_thr|
94
+ Open3.popen3(env, command(cmd, *args)) do |stdin, stdout, stderr, wait_thr|
95
95
  yield stdin, stdout, stderr, wait_thr if block_given?
96
96
 
97
97
  stdin.close
@@ -104,6 +104,12 @@ module Hanami
104
104
 
105
105
  Result.new(exit_code: exitstatus, out: out, err: err)
106
106
  end
107
+
108
+ # @since 2.1.0
109
+ # @api public
110
+ def command(cmd, *args)
111
+ [cmd, args].flatten(1).compact.join(" ")
112
+ end
107
113
  end
108
114
  end
109
115
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "uri"
4
- require_relative "./errors"
4
+ require_relative "errors"
5
5
 
6
6
  module Hanami
7
7
  module CLI
@@ -6,6 +6,6 @@ module Hanami
6
6
  #
7
7
  # @api public
8
8
  # @since 2.0.0
9
- VERSION = "2.0.0"
9
+ VERSION = "2.1.0"
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-22 00:00:00.000000000 Z
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,7 +53,7 @@ dependencies:
53
53
  version: '1.0'
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 1.0.1
56
+ version: 1.0.2
57
57
  - - "<"
58
58
  - !ruby/object:Gem::Version
59
59
  version: '2'
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '1.0'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 1.0.1
69
+ version: 1.0.2
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '2'
@@ -168,10 +168,10 @@ executables:
168
168
  extensions: []
169
169
  extra_rdoc_files: []
170
170
  files:
171
- - ".action_hero.yml"
172
171
  - ".github/FUNDING.yml"
173
172
  - ".github/workflows/ci.yml"
174
173
  - ".gitignore"
174
+ - ".repobot.yml"
175
175
  - ".rspec"
176
176
  - ".rubocop.yml"
177
177
  - ".yardopts"
@@ -191,6 +191,10 @@ files:
191
191
  - lib/hanami/cli/command.rb
192
192
  - lib/hanami/cli/commands.rb
193
193
  - lib/hanami/cli/commands/app.rb
194
+ - lib/hanami/cli/commands/app/assets.rb
195
+ - lib/hanami/cli/commands/app/assets/command.rb
196
+ - lib/hanami/cli/commands/app/assets/compile.rb
197
+ - lib/hanami/cli/commands/app/assets/watch.rb
194
198
  - lib/hanami/cli/commands/app/command.rb
195
199
  - lib/hanami/cli/commands/app/console.rb
196
200
  - lib/hanami/cli/commands/app/db/create.rb
@@ -209,9 +213,12 @@ files:
209
213
  - lib/hanami/cli/commands/app/db/utils/postgres.rb
210
214
  - lib/hanami/cli/commands/app/db/utils/sqlite.rb
211
215
  - lib/hanami/cli/commands/app/db/version.rb
216
+ - lib/hanami/cli/commands/app/dev.rb
212
217
  - lib/hanami/cli/commands/app/generate.rb
213
218
  - lib/hanami/cli/commands/app/generate/action.rb
219
+ - lib/hanami/cli/commands/app/generate/part.rb
214
220
  - lib/hanami/cli/commands/app/generate/slice.rb
221
+ - lib/hanami/cli/commands/app/generate/view.rb
215
222
  - lib/hanami/cli/commands/app/install.rb
216
223
  - lib/hanami/cli/commands/app/middleware.rb
217
224
  - lib/hanami/cli/commands/app/routes.rb
@@ -225,27 +232,58 @@ files:
225
232
  - lib/hanami/cli/generators/app/action.rb
226
233
  - lib/hanami/cli/generators/app/action/action.erb
227
234
  - lib/hanami/cli/generators/app/action/slice_action.erb
235
+ - lib/hanami/cli/generators/app/action/slice_template.html.erb
236
+ - lib/hanami/cli/generators/app/action/slice_view.erb
228
237
  - lib/hanami/cli/generators/app/action/template.erb
229
238
  - lib/hanami/cli/generators/app/action/template.html.erb
230
239
  - lib/hanami/cli/generators/app/action/view.erb
231
240
  - lib/hanami/cli/generators/app/action_context.rb
241
+ - lib/hanami/cli/generators/app/part.rb
242
+ - lib/hanami/cli/generators/app/part/app_base_part.erb
243
+ - lib/hanami/cli/generators/app/part/app_part.erb
244
+ - lib/hanami/cli/generators/app/part/slice_base_part.erb
245
+ - lib/hanami/cli/generators/app/part/slice_part.erb
246
+ - lib/hanami/cli/generators/app/part_context.rb
232
247
  - lib/hanami/cli/generators/app/slice.rb
233
248
  - lib/hanami/cli/generators/app/slice/action.erb
249
+ - lib/hanami/cli/generators/app/slice/app_css.erb
250
+ - lib/hanami/cli/generators/app/slice/app_js.erb
251
+ - lib/hanami/cli/generators/app/slice/app_layout.erb
234
252
  - lib/hanami/cli/generators/app/slice/entities.erb
253
+ - lib/hanami/cli/generators/app/slice/favicon.ico
254
+ - lib/hanami/cli/generators/app/slice/helpers.erb
235
255
  - lib/hanami/cli/generators/app/slice/keep.erb
236
256
  - lib/hanami/cli/generators/app/slice/repository.erb
237
257
  - lib/hanami/cli/generators/app/slice/routes.erb
238
258
  - lib/hanami/cli/generators/app/slice/slice.erb
239
259
  - lib/hanami/cli/generators/app/slice/view.erb
240
260
  - lib/hanami/cli/generators/app/slice_context.rb
261
+ - lib/hanami/cli/generators/app/view.rb
262
+ - lib/hanami/cli/generators/app/view/app_template.html.erb
263
+ - lib/hanami/cli/generators/app/view/app_view.erb
264
+ - lib/hanami/cli/generators/app/view/slice_template.html.erb
265
+ - lib/hanami/cli/generators/app/view/slice_view.erb
266
+ - lib/hanami/cli/generators/app/view_context.rb
241
267
  - lib/hanami/cli/generators/context.rb
242
268
  - lib/hanami/cli/generators/gem/app.rb
269
+ - lib/hanami/cli/generators/gem/app/404.html
270
+ - lib/hanami/cli/generators/gem/app/500.html
243
271
  - lib/hanami/cli/generators/gem/app/action.erb
244
272
  - lib/hanami/cli/generators/gem/app/app.erb
273
+ - lib/hanami/cli/generators/gem/app/app_css.erb
274
+ - lib/hanami/cli/generators/gem/app/app_js.erb
275
+ - lib/hanami/cli/generators/gem/app/app_layout.erb
276
+ - lib/hanami/cli/generators/gem/app/assets.js
245
277
  - lib/hanami/cli/generators/gem/app/config_ru.erb
278
+ - lib/hanami/cli/generators/gem/app/dev
246
279
  - lib/hanami/cli/generators/gem/app/env.erb
280
+ - lib/hanami/cli/generators/gem/app/favicon.ico
247
281
  - lib/hanami/cli/generators/gem/app/gemfile.erb
282
+ - lib/hanami/cli/generators/gem/app/gitignore.erb
283
+ - lib/hanami/cli/generators/gem/app/helpers.erb
248
284
  - lib/hanami/cli/generators/gem/app/keep.erb
285
+ - lib/hanami/cli/generators/gem/app/package.json.erb
286
+ - lib/hanami/cli/generators/gem/app/procfile.erb
249
287
  - lib/hanami/cli/generators/gem/app/puma.erb
250
288
  - lib/hanami/cli/generators/gem/app/rakefile.erb
251
289
  - lib/hanami/cli/generators/gem/app/readme.erb
@@ -253,8 +291,11 @@ files:
253
291
  - lib/hanami/cli/generators/gem/app/settings.erb
254
292
  - lib/hanami/cli/generators/gem/app/types.erb
255
293
  - lib/hanami/cli/generators/gem/app/validator.erb
294
+ - lib/hanami/cli/generators/gem/app/view.erb
256
295
  - lib/hanami/cli/generators/version.rb
296
+ - lib/hanami/cli/interactive_system_call.rb
257
297
  - lib/hanami/cli/middleware_stack_inspector.rb
298
+ - lib/hanami/cli/naming.rb
258
299
  - lib/hanami/cli/rake_tasks.rb
259
300
  - lib/hanami/cli/repl/core.rb
260
301
  - lib/hanami/cli/repl/irb.rb
@@ -290,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
331
  - !ruby/object:Gem::Version
291
332
  version: '0'
292
333
  requirements: []
293
- rubygems_version: 3.3.7
334
+ rubygems_version: 3.5.6
294
335
  signing_key:
295
336
  specification_version: 4
296
337
  summary: Hanami CLI