hanami-cli 2.0.3 → 2.1.0.beta2

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/Gemfile +3 -2
  4. data/LICENSE.md +1 -1
  5. data/README.md +1 -1
  6. data/hanami-cli.gemspec +1 -1
  7. data/lib/hanami/cli/bundler.rb +21 -7
  8. data/lib/hanami/cli/command.rb +4 -4
  9. data/lib/hanami/cli/commands/app/assets/command.rb +82 -0
  10. data/lib/hanami/cli/commands/app/assets/compile.rb +32 -0
  11. data/lib/hanami/cli/commands/app/assets/watch.rb +36 -0
  12. data/lib/hanami/cli/commands/app/assets.rb +16 -0
  13. data/lib/hanami/cli/commands/app/command.rb +2 -2
  14. data/lib/hanami/cli/commands/app/db/rollback.rb +30 -6
  15. data/lib/hanami/cli/commands/app/db/utils/database.rb +5 -1
  16. data/lib/hanami/cli/commands/app/dev.rb +57 -0
  17. data/lib/hanami/cli/commands/app/generate/action.rb +5 -4
  18. data/lib/hanami/cli/commands/app/generate/view.rb +57 -0
  19. data/lib/hanami/cli/commands/app/generate.rb +2 -2
  20. data/lib/hanami/cli/commands/app/install.rb +44 -1
  21. data/lib/hanami/cli/commands/app.rb +9 -0
  22. data/lib/hanami/cli/commands/gem/new.rb +41 -7
  23. data/lib/hanami/cli/errors.rb +30 -0
  24. data/lib/hanami/cli/files.rb +8 -2
  25. data/lib/hanami/cli/generators/app/action/action.erb +5 -1
  26. data/lib/hanami/cli/generators/app/action/slice_action.erb +5 -1
  27. data/lib/hanami/cli/generators/app/action/slice_template.html.erb +1 -0
  28. data/lib/hanami/cli/generators/app/action/slice_view.erb +10 -0
  29. data/lib/hanami/cli/generators/app/action/template.html.erb +1 -2
  30. data/lib/hanami/cli/generators/app/action/view.erb +2 -5
  31. data/lib/hanami/cli/generators/app/action.rb +34 -22
  32. data/lib/hanami/cli/generators/app/action_context.rb +1 -1
  33. data/lib/hanami/cli/generators/app/slice/app_css.erb +5 -0
  34. data/lib/hanami/cli/generators/app/slice/app_js.erb +1 -0
  35. data/lib/hanami/cli/generators/app/slice/app_layout.erb +18 -0
  36. data/lib/hanami/cli/generators/app/slice/helpers.erb +10 -0
  37. data/lib/hanami/cli/generators/app/slice/view.erb +0 -2
  38. data/lib/hanami/cli/generators/app/slice.rb +15 -6
  39. data/lib/hanami/cli/generators/app/slice_context.rb +18 -0
  40. data/lib/hanami/cli/generators/app/view/app_template.html.erb +1 -0
  41. data/lib/hanami/cli/generators/app/view/app_view.erb +10 -0
  42. data/lib/hanami/cli/generators/app/view/slice_template.html.erb +1 -0
  43. data/lib/hanami/cli/generators/app/view/slice_view.erb +10 -0
  44. data/lib/hanami/cli/generators/app/view.rb +89 -0
  45. data/lib/hanami/cli/generators/app/view_context.rb +100 -0
  46. data/lib/hanami/cli/generators/context.rb +53 -4
  47. data/lib/hanami/cli/generators/gem/app/404.html +11 -0
  48. data/lib/hanami/cli/generators/gem/app/500.html +11 -0
  49. data/lib/hanami/cli/generators/gem/app/app_css.erb +5 -0
  50. data/lib/hanami/cli/generators/gem/app/app_js.erb +1 -0
  51. data/lib/hanami/cli/generators/gem/app/app_layout.erb +18 -0
  52. data/lib/hanami/cli/generators/gem/app/favicon.ico +0 -0
  53. data/lib/hanami/cli/generators/gem/app/gemfile.erb +14 -6
  54. data/lib/hanami/cli/generators/gem/app/gitignore.erb +4 -0
  55. data/lib/hanami/cli/generators/gem/app/helpers.erb +10 -0
  56. data/lib/hanami/cli/generators/gem/app/procfile.erb +4 -0
  57. data/lib/hanami/cli/generators/gem/app/puma.erb +5 -3
  58. data/lib/hanami/cli/generators/gem/app/view.erb +9 -0
  59. data/lib/hanami/cli/generators/gem/app.rb +15 -1
  60. data/lib/hanami/cli/interactive_system_call.rb +64 -0
  61. data/lib/hanami/cli/system_call.rb +8 -2
  62. data/lib/hanami/cli/url.rb +1 -1
  63. data/lib/hanami/cli/version.rb +1 -1
  64. metadata +35 -7
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "slice_context"
4
+ require "dry/files/path"
5
+
6
+ module Hanami
7
+ module CLI
8
+ module Generators
9
+ # @since 2.1.0
10
+ # @api private
11
+ module App
12
+ # @since 2.1.0
13
+ # @api private
14
+ class ViewContext < SliceContext
15
+ # TODO: move these constants somewhere that will let us reuse them
16
+ KEY_SEPARATOR = "."
17
+ private_constant :KEY_SEPARATOR
18
+
19
+ NAMESPACE_SEPARATOR = "::"
20
+ private_constant :NAMESPACE_SEPARATOR
21
+
22
+ INDENTATION = " "
23
+ private_constant :INDENTATION
24
+
25
+ OFFSET = INDENTATION * 2
26
+ private_constant :OFFSET
27
+
28
+ # @since 2.1.0
29
+ # @api private
30
+ attr_reader :key
31
+
32
+ # @since 2.1.0
33
+ # @api private
34
+ def initialize(inflector, app, slice, key)
35
+ @key = key
36
+ super(inflector, app, slice, nil)
37
+ end
38
+
39
+ # @since 2.1.0
40
+ # @api private
41
+ def namespaces
42
+ @namespaces ||= key.split(KEY_SEPARATOR)[..-2]
43
+ end
44
+
45
+ # @since 2.1.0
46
+ # @api private
47
+ def name
48
+ @name ||= key.split(KEY_SEPARATOR)[-1]
49
+ end
50
+
51
+ # @since 2.1.0
52
+ # @api private
53
+ def camelized_namespace
54
+ namespaces.map { inflector.camelize(_1) }.join(NAMESPACE_SEPARATOR)
55
+ end
56
+
57
+ # @since 2.1.0
58
+ # @api private
59
+ def camelized_name
60
+ inflector.camelize(name)
61
+ end
62
+
63
+ # @since 2.1.0
64
+ # @api private
65
+ def underscored_namespace
66
+ namespaces.map { inflector.underscore(_1) }
67
+ end
68
+
69
+ # @since 2.1.0
70
+ # @api private
71
+ def underscored_name
72
+ inflector.underscore(name)
73
+ end
74
+
75
+ # @since 2.1.0
76
+ # @api private
77
+ def module_namespace_declaration
78
+ namespaces.each_with_index.map { |token, i|
79
+ "#{OFFSET}#{INDENTATION * i}module #{inflector.camelize(token)}"
80
+ }.join($/)
81
+ end
82
+
83
+ # @since 2.1.0
84
+ # @api private
85
+ def module_namespace_end
86
+ namespaces.each_with_index.map { |_, i|
87
+ "#{OFFSET}#{INDENTATION * i}end"
88
+ }.reverse.join($/)
89
+ end
90
+
91
+ # @since 2.1.0
92
+ # @api private
93
+ def module_namespace_offset
94
+ "#{OFFSET}#{INDENTATION * namespaces.count}"
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "./version"
3
+ require_relative "version"
4
4
 
5
5
  module Hanami
6
6
  module CLI
@@ -12,9 +12,10 @@ module Hanami
12
12
  class Context
13
13
  # @since 2.0.0
14
14
  # @api private
15
- def initialize(inflector, app)
15
+ def initialize(inflector, app, **options)
16
16
  @inflector = inflector
17
17
  @app = app
18
+ @options = options
18
19
  end
19
20
 
20
21
  # @since 2.0.0
@@ -23,10 +24,20 @@ module Hanami
23
24
  binding
24
25
  end
25
26
 
27
+ def hanami_gem(name)
28
+ gem_name = name == "hanami" ? "hanami" : "hanami-#{name}"
29
+
30
+ %(gem "#{gem_name}", #{hanami_version(name)})
31
+ end
32
+
26
33
  # @since 2.0.0
27
34
  # @api private
28
- def hanami_version
29
- Version.gem_requirement
35
+ def hanami_version(gem_name)
36
+ if hanami_head?
37
+ %(github: "hanami/#{gem_name}", branch: "main")
38
+ else
39
+ %("#{Version.gem_requirement}")
40
+ end
30
41
  end
31
42
 
32
43
  # @since 2.0.0
@@ -41,11 +52,49 @@ module Hanami
41
52
  inflector.underscore(app)
42
53
  end
43
54
 
55
+ # @since 2.1.0
56
+ # @api private
57
+ def humanized_app_name
58
+ inflector.humanize(app)
59
+ end
60
+
61
+ # @since 2.1.0
62
+ # @api private
63
+ def hanami_head?
64
+ options.fetch(:head)
65
+ end
66
+
67
+ # @since 2.1.0
68
+ # @api private
69
+ def generate_assets?
70
+ !options.fetch(:skip_assets, false)
71
+ end
72
+
73
+ # @since 2.1.0
74
+ # @api private
75
+ def bundled_views?
76
+ Hanami.bundled?("hanami-view")
77
+ end
78
+
79
+ # @since 2.1.0
80
+ # @api private
81
+ def bundled_assets?
82
+ Hanami.bundled?("hanami-assets")
83
+ end
84
+
44
85
  private
45
86
 
87
+ # @since 2.0.0
88
+ # @api private
46
89
  attr_reader :inflector
47
90
 
91
+ # @since 2.0.0
92
+ # @api private
48
93
  attr_reader :app
94
+
95
+ # @since 2.1.0
96
+ # @api private
97
+ attr_reader :options
49
98
  end
50
99
  end
51
100
  end
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn’t exist (404)</title>
5
+ </head>
6
+ <body>
7
+ <!-- This file lives in public/404.html -->
8
+ <h1>The page you were looking for doesn’t exist.</h1>
9
+ <p>You may have mistyped the address or the page may have moved.</p>
10
+ </body>
11
+ </html>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We’re sorry, but something went wrong (500)</title>
5
+ </head>
6
+ <body>
7
+ <!-- This file lives in public/500.html -->
8
+ <h1>We’re sorry, but something went wrong.</h1>
9
+ <p>If you are the application owner, check the logs for more information.</p>
10
+ </body>
11
+ </html>
@@ -0,0 +1,5 @@
1
+ body {
2
+ background-color: #fff;
3
+ color: #000;
4
+ font-family: sans-serif;
5
+ }
@@ -0,0 +1 @@
1
+ import "../css/app.css";
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title><%= humanized_app_name %></title>
7
+ <%- if generate_assets? -%>
8
+ <%%= favicon %>
9
+ <%%= css "app" %>
10
+ <%- end -%>
11
+ </head>
12
+ <body>
13
+ <%%= yield %>
14
+ <%- if generate_assets? -%>
15
+ <%%= js "app" %>
16
+ <%- end -%>
17
+ </body>
18
+ </html>
@@ -2,23 +2,31 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "hanami", "<%= hanami_version %>"
6
- gem "hanami-router", "<%= hanami_version %>"
7
- gem "hanami-controller", "<%= hanami_version %>"
8
- gem "hanami-validations", "<%= hanami_version %>"
5
+ <%= hanami_gem("hanami") %>
6
+ <%= hanami_gem("router") %>
7
+ <%= hanami_gem("controller") %>
8
+ <%= hanami_gem("validations") %>
9
+ <%= hanami_gem("view") %>
10
+ <%- if generate_assets? -%>
11
+ <%= hanami_gem("assets") %>
12
+ <%- end -%>
9
13
 
10
14
  gem "dry-types", "~> 1.0", ">= 1.6.1"
11
15
  gem "puma"
12
16
  gem "rake"
13
17
 
18
+ group :development do
19
+ <%= hanami_gem("webconsole") %>
20
+ end
21
+
14
22
  group :development, :test do
15
23
  gem "dotenv"
16
24
  end
17
25
 
18
26
  group :cli, :development do
19
- gem "hanami-reloader"
27
+ <%= hanami_gem("reloader") %>
20
28
  end
21
29
 
22
30
  group :cli, :development, :test do
23
- gem "hanami-rspec"
31
+ <%= hanami_gem("rspec") %>
24
32
  end
@@ -1,2 +1,6 @@
1
1
  .env
2
2
  log/*
3
+ <%- if generate_assets? -%>
4
+ public/
5
+ node_modules/
6
+ <%- end -%>
@@ -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,4 @@
1
+ web: bundle exec hanami server
2
+ <%- if generate_assets? -%>
3
+ assets: bundle exec hanami assets watch
4
+ <%- end -%>
@@ -6,10 +6,12 @@ threads min_threads_count, max_threads_count
6
6
 
7
7
  port ENV.fetch("<%= Hanami::Port::ENV_VAR %>", <%= Hanami::Port::DEFAULT %>)
8
8
  environment ENV.fetch("HANAMI_ENV", "development")
9
- workers ENV.fetch("HANAMI_WEB_CONCURRENCY", 2)
9
+ workers ENV.fetch("HANAMI_WEB_CONCURRENCY", 0)
10
10
 
11
- on_worker_boot do
12
- Hanami.shutdown
11
+ if ENV.fetch("HANAMI_WEB_CONCURRENCY", 0) > 0
12
+ on_worker_boot do
13
+ Hanami.shutdown
14
+ end
13
15
  end
14
16
 
15
17
  preload_app!
@@ -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
@@ -40,6 +40,7 @@ module Hanami
40
40
  fs.write("README.md", t("readme.erb", context))
41
41
  fs.write("Gemfile", t("gemfile.erb", context))
42
42
  fs.write("Rakefile", t("rakefile.erb", context))
43
+ fs.write("Procfile.dev", t("procfile.erb", context))
43
44
  fs.write("config.ru", t("config_ru.erb", context))
44
45
 
45
46
  fs.write("config/app.rb", t("app.erb", context))
@@ -52,13 +53,26 @@ module Hanami
52
53
 
53
54
  fs.write("app/actions/.keep", t("keep.erb", context))
54
55
  fs.write("app/action.rb", t("action.erb", context))
56
+ fs.write("app/view.rb", t("view.erb", context))
57
+ fs.write("app/views/helpers.rb", t("helpers.erb", context))
58
+ fs.write("app/templates/layouts/app.html.erb", t("app_layout.erb", context))
59
+
60
+ if context.generate_assets?
61
+ fs.write("app/assets/js/app.js", t("app_js.erb", context))
62
+ fs.write("app/assets/css/app.css", t("app_css.erb", context))
63
+ fs.write("app/assets/images/favicon.ico", File.read(File.join(__dir__, "app", "favicon.ico")))
64
+ end
65
+
66
+ fs.write("public/404.html", File.read(File.join(__dir__, "app", "404.html")))
67
+ fs.write("public/500.html", File.read(File.join(__dir__, "app", "500.html")))
55
68
  end
56
69
 
57
70
  def template(path, context)
58
71
  require "erb"
59
72
 
60
73
  ERB.new(
61
- File.read(File.join(__dir__, "app", path))
74
+ File.read(File.join(__dir__, "app", path)),
75
+ trim_mode: "-"
62
76
  ).result(context.ctx)
63
77
  end
64
78
 
@@ -0,0 +1,64 @@
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)
13
+ @out = out
14
+ @err = err
15
+ super()
16
+ end
17
+
18
+ # @api private
19
+ # @since 2.1.0
20
+ def call(cmd, *args, env: {})
21
+ ::Bundler.with_unbundled_env do
22
+ threads = []
23
+ exit_status = 0
24
+
25
+ # rubocop:disable Lint/SuppressedException
26
+ Open3.popen3(env, command(cmd, *args)) do |_stdin, stdout, stderr, wait_thr|
27
+ threads << Thread.new do
28
+ stdout.each_line do |line|
29
+ out.puts(line)
30
+ end
31
+ rescue IOError # FIXME: Check if this is legit
32
+ end
33
+
34
+ threads << Thread.new do
35
+ stderr.each_line do |line|
36
+ err.puts(line)
37
+ end
38
+ rescue IOError # FIXME: Check if this is legit
39
+ end
40
+
41
+ threads.each(&:join)
42
+
43
+ exit_status = wait_thr.value
44
+ end
45
+ # rubocop:enable Lint/SuppressedException
46
+
47
+ exit(exit_status.exitstatus)
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ # @api private
54
+ # @since 2.1.0
55
+ attr_reader :out, :err
56
+
57
+ # @since 2.1.0
58
+ # @api public
59
+ def command(cmd, *args)
60
+ [cmd, args].flatten(1).compact.join(" ")
61
+ end
62
+ end
63
+ end
64
+ 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.3"
9
+ VERSION = "2.1.0.beta2"
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.3
4
+ version: 2.1.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-10-04 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'
@@ -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,11 @@ 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
214
219
  - lib/hanami/cli/commands/app/generate/slice.rb
220
+ - lib/hanami/cli/commands/app/generate/view.rb
215
221
  - lib/hanami/cli/commands/app/install.rb
216
222
  - lib/hanami/cli/commands/app/middleware.rb
217
223
  - lib/hanami/cli/commands/app/routes.rb
@@ -225,28 +231,48 @@ files:
225
231
  - lib/hanami/cli/generators/app/action.rb
226
232
  - lib/hanami/cli/generators/app/action/action.erb
227
233
  - lib/hanami/cli/generators/app/action/slice_action.erb
234
+ - lib/hanami/cli/generators/app/action/slice_template.html.erb
235
+ - lib/hanami/cli/generators/app/action/slice_view.erb
228
236
  - lib/hanami/cli/generators/app/action/template.erb
229
237
  - lib/hanami/cli/generators/app/action/template.html.erb
230
238
  - lib/hanami/cli/generators/app/action/view.erb
231
239
  - lib/hanami/cli/generators/app/action_context.rb
232
240
  - lib/hanami/cli/generators/app/slice.rb
233
241
  - lib/hanami/cli/generators/app/slice/action.erb
242
+ - lib/hanami/cli/generators/app/slice/app_css.erb
243
+ - lib/hanami/cli/generators/app/slice/app_js.erb
244
+ - lib/hanami/cli/generators/app/slice/app_layout.erb
234
245
  - lib/hanami/cli/generators/app/slice/entities.erb
246
+ - lib/hanami/cli/generators/app/slice/helpers.erb
235
247
  - lib/hanami/cli/generators/app/slice/keep.erb
236
248
  - lib/hanami/cli/generators/app/slice/repository.erb
237
249
  - lib/hanami/cli/generators/app/slice/routes.erb
238
250
  - lib/hanami/cli/generators/app/slice/slice.erb
239
251
  - lib/hanami/cli/generators/app/slice/view.erb
240
252
  - lib/hanami/cli/generators/app/slice_context.rb
253
+ - lib/hanami/cli/generators/app/view.rb
254
+ - lib/hanami/cli/generators/app/view/app_template.html.erb
255
+ - lib/hanami/cli/generators/app/view/app_view.erb
256
+ - lib/hanami/cli/generators/app/view/slice_template.html.erb
257
+ - lib/hanami/cli/generators/app/view/slice_view.erb
258
+ - lib/hanami/cli/generators/app/view_context.rb
241
259
  - lib/hanami/cli/generators/context.rb
242
260
  - lib/hanami/cli/generators/gem/app.rb
261
+ - lib/hanami/cli/generators/gem/app/404.html
262
+ - lib/hanami/cli/generators/gem/app/500.html
243
263
  - lib/hanami/cli/generators/gem/app/action.erb
244
264
  - lib/hanami/cli/generators/gem/app/app.erb
265
+ - lib/hanami/cli/generators/gem/app/app_css.erb
266
+ - lib/hanami/cli/generators/gem/app/app_js.erb
267
+ - lib/hanami/cli/generators/gem/app/app_layout.erb
245
268
  - lib/hanami/cli/generators/gem/app/config_ru.erb
246
269
  - lib/hanami/cli/generators/gem/app/env.erb
270
+ - lib/hanami/cli/generators/gem/app/favicon.ico
247
271
  - lib/hanami/cli/generators/gem/app/gemfile.erb
248
272
  - lib/hanami/cli/generators/gem/app/gitignore.erb
273
+ - lib/hanami/cli/generators/gem/app/helpers.erb
249
274
  - lib/hanami/cli/generators/gem/app/keep.erb
275
+ - lib/hanami/cli/generators/gem/app/procfile.erb
250
276
  - lib/hanami/cli/generators/gem/app/puma.erb
251
277
  - lib/hanami/cli/generators/gem/app/rakefile.erb
252
278
  - lib/hanami/cli/generators/gem/app/readme.erb
@@ -254,7 +280,9 @@ files:
254
280
  - lib/hanami/cli/generators/gem/app/settings.erb
255
281
  - lib/hanami/cli/generators/gem/app/types.erb
256
282
  - lib/hanami/cli/generators/gem/app/validator.erb
283
+ - lib/hanami/cli/generators/gem/app/view.erb
257
284
  - lib/hanami/cli/generators/version.rb
285
+ - lib/hanami/cli/interactive_system_call.rb
258
286
  - lib/hanami/cli/middleware_stack_inspector.rb
259
287
  - lib/hanami/cli/naming.rb
260
288
  - lib/hanami/cli/rake_tasks.rb
@@ -288,11 +316,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
316
  version: '3.0'
289
317
  required_rubygems_version: !ruby/object:Gem::Requirement
290
318
  requirements:
291
- - - ">="
319
+ - - ">"
292
320
  - !ruby/object:Gem::Version
293
- version: '0'
321
+ version: 1.3.1
294
322
  requirements: []
295
- rubygems_version: 3.4.5
323
+ rubygems_version: 3.4.13
296
324
  signing_key:
297
325
  specification_version: 4
298
326
  summary: Hanami CLI