hanami-cli 2.2.1 → 2.3.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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +9 -1
  3. data/CHANGELOG.md +50 -0
  4. data/Gemfile +3 -1
  5. data/hanami-cli.gemspec +3 -1
  6. data/lib/hanami/cli/command.rb +5 -11
  7. data/lib/hanami/cli/commands/app/command.rb +5 -5
  8. data/lib/hanami/cli/commands/app/console.rb +1 -0
  9. data/lib/hanami/cli/commands/app/db/command.rb +0 -1
  10. data/lib/hanami/cli/commands/app/db/drop.rb +2 -2
  11. data/lib/hanami/cli/commands/app/db/rollback.rb +204 -0
  12. data/lib/hanami/cli/commands/app/db/utils/mysql.rb +3 -2
  13. data/lib/hanami/cli/commands/app/db/utils/postgres.rb +3 -1
  14. data/lib/hanami/cli/commands/app/generate/action.rb +32 -40
  15. data/lib/hanami/cli/commands/app/generate/command.rb +54 -17
  16. data/lib/hanami/cli/commands/app/generate/component.rb +4 -19
  17. data/lib/hanami/cli/commands/app/generate/part.rb +4 -21
  18. data/lib/hanami/cli/commands/app/generate/slice.rb +2 -2
  19. data/lib/hanami/cli/commands/app/generate/view.rb +5 -24
  20. data/lib/hanami/cli/commands/app/run.rb +108 -0
  21. data/lib/hanami/cli/commands/app/server.rb +0 -1
  22. data/lib/hanami/cli/commands/app.rb +2 -0
  23. data/lib/hanami/cli/commands/gem/new.rb +34 -3
  24. data/lib/hanami/cli/errors.rb +26 -0
  25. data/lib/hanami/cli/files.rb +20 -6
  26. data/lib/hanami/cli/generators/app/action.rb +83 -100
  27. data/lib/hanami/cli/generators/app/component.rb +11 -33
  28. data/lib/hanami/cli/generators/app/migration.rb +1 -1
  29. data/lib/hanami/cli/generators/app/operation.rb +4 -5
  30. data/lib/hanami/cli/generators/app/part.rb +42 -65
  31. data/lib/hanami/cli/generators/app/relation.rb +5 -6
  32. data/lib/hanami/cli/generators/app/repo.rb +3 -5
  33. data/lib/hanami/cli/generators/app/ruby_class_file.rb +32 -0
  34. data/lib/hanami/cli/generators/app/ruby_file.rb +123 -0
  35. data/lib/hanami/cli/generators/app/ruby_module_file.rb +28 -0
  36. data/lib/hanami/cli/generators/app/slice.rb +130 -37
  37. data/lib/hanami/cli/generators/app/struct.rb +3 -4
  38. data/lib/hanami/cli/generators/app/view.rb +40 -45
  39. data/lib/hanami/cli/generators/constants.rb +1 -1
  40. data/lib/hanami/cli/generators/context.rb +6 -0
  41. data/lib/hanami/cli/generators/gem/app/assets.js +14 -13
  42. data/lib/hanami/cli/generators/gem/app/dev +1 -1
  43. data/lib/hanami/cli/generators/gem/app/gemfile.erb +5 -0
  44. data/lib/hanami/cli/generators/gem/app/gitignore.erb +3 -1
  45. data/lib/hanami/cli/generators/gem/app/rakefile.erb +3 -0
  46. data/lib/hanami/cli/generators/gem/app/readme.erb +14 -0
  47. data/lib/hanami/cli/generators/gem/app/types.erb +1 -1
  48. data/lib/hanami/cli/generators/gem/app.rb +40 -37
  49. data/lib/hanami/cli/ruby_file_generator.rb +17 -8
  50. data/lib/hanami/cli/server.rb +15 -1
  51. data/lib/hanami/cli/version.rb +1 -1
  52. data/lib/hanami/console/context.rb +5 -0
  53. metadata +37 -42
  54. data/lib/hanami/cli/generators/app/action/action.erb +0 -17
  55. data/lib/hanami/cli/generators/app/action/slice_action.erb +0 -17
  56. data/lib/hanami/cli/generators/app/action/slice_template.html.erb +0 -1
  57. data/lib/hanami/cli/generators/app/action/slice_view.erb +0 -10
  58. data/lib/hanami/cli/generators/app/action/template.erb +0 -0
  59. data/lib/hanami/cli/generators/app/action/template.html.erb +0 -1
  60. data/lib/hanami/cli/generators/app/action/view.erb +0 -10
  61. data/lib/hanami/cli/generators/app/action_context.rb +0 -90
  62. data/lib/hanami/cli/generators/app/component/component.erb +0 -8
  63. data/lib/hanami/cli/generators/app/component/slice_component.erb +0 -8
  64. data/lib/hanami/cli/generators/app/component_context.rb +0 -82
  65. data/lib/hanami/cli/generators/app/part/app_base_part.erb +0 -9
  66. data/lib/hanami/cli/generators/app/part/app_part.erb +0 -13
  67. data/lib/hanami/cli/generators/app/part/slice_base_part.erb +0 -9
  68. data/lib/hanami/cli/generators/app/part/slice_part.erb +0 -13
  69. data/lib/hanami/cli/generators/app/part_context.rb +0 -82
  70. data/lib/hanami/cli/generators/app/ruby_file_writer.rb +0 -151
  71. data/lib/hanami/cli/generators/app/slice/action.erb +0 -7
  72. data/lib/hanami/cli/generators/app/slice/app_css.erb +0 -5
  73. data/lib/hanami/cli/generators/app/slice/app_js.erb +0 -1
  74. data/lib/hanami/cli/generators/app/slice/app_layout.erb +0 -18
  75. data/lib/hanami/cli/generators/app/slice/helpers.erb +0 -10
  76. data/lib/hanami/cli/generators/app/slice/keep.erb +0 -0
  77. data/lib/hanami/cli/generators/app/slice/operation.erb +0 -7
  78. data/lib/hanami/cli/generators/app/slice/relation.erb +0 -8
  79. data/lib/hanami/cli/generators/app/slice/repo.erb +0 -8
  80. data/lib/hanami/cli/generators/app/slice/routes.erb +0 -3
  81. data/lib/hanami/cli/generators/app/slice/struct.erb +0 -8
  82. data/lib/hanami/cli/generators/app/slice/view.erb +0 -7
  83. data/lib/hanami/cli/generators/app/slice_context.rb +0 -72
  84. data/lib/hanami/cli/generators/app/view/app_template.html.erb +0 -1
  85. data/lib/hanami/cli/generators/app/view/app_view.erb +0 -10
  86. data/lib/hanami/cli/generators/app/view/slice_template.html.erb +0 -1
  87. data/lib/hanami/cli/generators/app/view/slice_view.erb +0 -10
  88. data/lib/hanami/cli/generators/app/view_context.rb +0 -88
@@ -26,7 +26,7 @@ module Hanami
26
26
  INDENT = " "
27
27
 
28
28
  def self.class(class_name, **args)
29
- new(class_name: class_name, **args).to_s
29
+ new(class_name: class_name, **args).call
30
30
  end
31
31
 
32
32
  def self.module(*names, **args)
@@ -36,24 +36,33 @@ module Hanami
36
36
  names
37
37
  end
38
38
 
39
- new(modules: module_names, class_name: nil, parent_class: nil, **args).to_s
39
+ new(
40
+ modules: module_names,
41
+ class_name: nil,
42
+ parent_class_name: nil,
43
+ **args,
44
+ ).call
40
45
  end
41
46
 
42
47
  def initialize(
43
48
  class_name: nil,
44
- parent_class: nil,
49
+ parent_class_name: nil,
45
50
  modules: [],
46
51
  header: [],
47
52
  body: []
48
53
  )
49
54
  @class_name = class_name
50
- @parent_class = parent_class
55
+ @parent_class_name = parent_class_name
51
56
  @modules = modules
52
57
  @header = header.any? ? (header + [""]) : []
53
58
  @body = body
59
+
60
+ if parent_class_name && !class_name
61
+ raise ArgumentError, "class_name is required when parent_class_name is specified"
62
+ end
54
63
  end
55
64
 
56
- def to_s
65
+ def call
57
66
  definition = lines(modules).map { |line| "#{line}\n" }.join
58
67
  source_code = [header, definition].flatten.join("\n")
59
68
  ensure_parseable!(source_code)
@@ -64,7 +73,7 @@ module Hanami
64
73
 
65
74
  attr_reader(
66
75
  :class_name,
67
- :parent_class,
76
+ :parent_class_name,
68
77
  :modules,
69
78
  :header,
70
79
  :body
@@ -98,8 +107,8 @@ module Hanami
98
107
  end
99
108
 
100
109
  def class_definition
101
- if parent_class
102
- "class #{class_name} < #{parent_class}"
110
+ if parent_class_name
111
+ "class #{class_name} < #{parent_class_name}"
103
112
  else
104
113
  "class #{class_name}"
105
114
  end
@@ -1,5 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ begin
4
+ require "rackup"
5
+ rescue LoadError
6
+ # Rack 2 doesn't have rackup gem, use Rack::Server instead
7
+ end
8
+
3
9
  module Hanami
4
10
  module CLI
5
11
  # @since 2.0.0
@@ -24,9 +30,17 @@ module Hanami
24
30
  warn: :warn
25
31
  }.freeze
26
32
 
33
+ def self.rack_server_class
34
+ if defined?(Rackup::Server)
35
+ Rackup::Server
36
+ else
37
+ Rack::Server
38
+ end
39
+ end
40
+
27
41
  # @since 2.0.0
28
42
  # @api private
29
- def initialize(rack_server: Rack::Server)
43
+ def initialize(rack_server: self.class.rack_server_class)
30
44
  @rack_server = rack_server
31
45
  end
32
46
 
@@ -6,6 +6,6 @@ module Hanami
6
6
  #
7
7
  # @api public
8
8
  # @since 2.0.0
9
- VERSION = "2.2.1"
9
+ VERSION = "2.3.0.beta2"
10
10
  end
11
11
  end
@@ -50,6 +50,11 @@ module Hanami
50
50
  define_method(:respond_to_missing?) do |name, include_private|
51
51
  super(name, include_private) || hanami_app.respond_to?(name, include_private)
52
52
  end
53
+
54
+ # User-provided extension modules
55
+ app.config.console.extensions.each do |mod|
56
+ include mod
57
+ end
53
58
  end
54
59
  end
55
60
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.3.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-11-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -90,6 +89,20 @@ dependencies:
90
89
  - - "<"
91
90
  - !ruby/object:Gem::Version
92
91
  version: '2'
92
+ - !ruby/object:Gem::Dependency
93
+ name: irb
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
93
106
  - !ruby/object:Gem::Dependency
94
107
  name: rake
95
108
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +131,20 @@ dependencies:
118
131
  - - "~>"
119
132
  - !ruby/object:Gem::Version
120
133
  version: '2.6'
134
+ - !ruby/object:Gem::Dependency
135
+ name: rackup
136
+ requirement: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
121
148
  - !ruby/object:Gem::Dependency
122
149
  name: rspec
123
150
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +230,7 @@ files:
203
230
  - lib/hanami/cli/commands/app/db/drop.rb
204
231
  - lib/hanami/cli/commands/app/db/migrate.rb
205
232
  - lib/hanami/cli/commands/app/db/prepare.rb
233
+ - lib/hanami/cli/commands/app/db/rollback.rb
206
234
  - lib/hanami/cli/commands/app/db/seed.rb
207
235
  - lib/hanami/cli/commands/app/db/structure/dump.rb
208
236
  - lib/hanami/cli/commands/app/db/structure/load.rb
@@ -227,6 +255,7 @@ files:
227
255
  - lib/hanami/cli/commands/app/install.rb
228
256
  - lib/hanami/cli/commands/app/middleware.rb
229
257
  - lib/hanami/cli/commands/app/routes.rb
258
+ - lib/hanami/cli/commands/app/run.rb
230
259
  - lib/hanami/cli/commands/app/server.rb
231
260
  - lib/hanami/cli/commands/app/version.rb
232
261
  - lib/hanami/cli/commands/gem.rb
@@ -235,51 +264,19 @@ files:
235
264
  - lib/hanami/cli/errors.rb
236
265
  - lib/hanami/cli/files.rb
237
266
  - lib/hanami/cli/generators/app/action.rb
238
- - lib/hanami/cli/generators/app/action/action.erb
239
- - lib/hanami/cli/generators/app/action/slice_action.erb
240
- - lib/hanami/cli/generators/app/action/slice_template.html.erb
241
- - lib/hanami/cli/generators/app/action/slice_view.erb
242
- - lib/hanami/cli/generators/app/action/template.erb
243
- - lib/hanami/cli/generators/app/action/template.html.erb
244
- - lib/hanami/cli/generators/app/action/view.erb
245
- - lib/hanami/cli/generators/app/action_context.rb
246
267
  - lib/hanami/cli/generators/app/component.rb
247
- - lib/hanami/cli/generators/app/component/component.erb
248
- - lib/hanami/cli/generators/app/component/slice_component.erb
249
- - lib/hanami/cli/generators/app/component_context.rb
250
268
  - lib/hanami/cli/generators/app/migration.rb
251
269
  - lib/hanami/cli/generators/app/operation.rb
252
270
  - lib/hanami/cli/generators/app/part.rb
253
- - lib/hanami/cli/generators/app/part/app_base_part.erb
254
- - lib/hanami/cli/generators/app/part/app_part.erb
255
- - lib/hanami/cli/generators/app/part/slice_base_part.erb
256
- - lib/hanami/cli/generators/app/part/slice_part.erb
257
- - lib/hanami/cli/generators/app/part_context.rb
258
271
  - lib/hanami/cli/generators/app/relation.rb
259
272
  - lib/hanami/cli/generators/app/repo.rb
260
- - lib/hanami/cli/generators/app/ruby_file_writer.rb
273
+ - lib/hanami/cli/generators/app/ruby_class_file.rb
274
+ - lib/hanami/cli/generators/app/ruby_file.rb
275
+ - lib/hanami/cli/generators/app/ruby_module_file.rb
261
276
  - lib/hanami/cli/generators/app/slice.rb
262
- - lib/hanami/cli/generators/app/slice/action.erb
263
- - lib/hanami/cli/generators/app/slice/app_css.erb
264
- - lib/hanami/cli/generators/app/slice/app_js.erb
265
- - lib/hanami/cli/generators/app/slice/app_layout.erb
266
277
  - lib/hanami/cli/generators/app/slice/favicon.ico
267
- - lib/hanami/cli/generators/app/slice/helpers.erb
268
- - lib/hanami/cli/generators/app/slice/keep.erb
269
- - lib/hanami/cli/generators/app/slice/operation.erb
270
- - lib/hanami/cli/generators/app/slice/relation.erb
271
- - lib/hanami/cli/generators/app/slice/repo.erb
272
- - lib/hanami/cli/generators/app/slice/routes.erb
273
- - lib/hanami/cli/generators/app/slice/struct.erb
274
- - lib/hanami/cli/generators/app/slice/view.erb
275
- - lib/hanami/cli/generators/app/slice_context.rb
276
278
  - lib/hanami/cli/generators/app/struct.rb
277
279
  - lib/hanami/cli/generators/app/view.rb
278
- - lib/hanami/cli/generators/app/view/app_template.html.erb
279
- - lib/hanami/cli/generators/app/view/app_view.erb
280
- - lib/hanami/cli/generators/app/view/slice_template.html.erb
281
- - lib/hanami/cli/generators/app/view/slice_view.erb
282
- - lib/hanami/cli/generators/app/view_context.rb
283
280
  - lib/hanami/cli/generators/constants.rb
284
281
  - lib/hanami/cli/generators/context.rb
285
282
  - lib/hanami/cli/generators/gem/app.rb
@@ -339,7 +336,6 @@ metadata:
339
336
  source_code_uri: https://github.com/hanami/cli
340
337
  changelog_uri: https://github.com/hanami/cli/blob/master/CHANGELOG.md
341
338
  rubygems_mfa_required: 'true'
342
- post_install_message:
343
339
  rdoc_options: []
344
340
  require_paths:
345
341
  - lib
@@ -347,15 +343,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
343
  requirements:
348
344
  - - ">="
349
345
  - !ruby/object:Gem::Version
350
- version: '3.1'
346
+ version: '3.2'
351
347
  required_rubygems_version: !ruby/object:Gem::Requirement
352
348
  requirements:
353
349
  - - ">="
354
350
  - !ruby/object:Gem::Version
355
351
  version: '0'
356
352
  requirements: []
357
- rubygems_version: 3.5.22
358
- signing_key:
353
+ rubygems_version: 3.6.9
359
354
  specification_version: 4
360
355
  summary: Hanami CLI
361
356
  test_files: []
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_app_name %>
4
- module Actions
5
- <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_app_name %>::Action
7
- <%- if bundled_views? -%>
8
- <%= module_controller_offset %> def handle(request, response)
9
- <%- else -%>
10
- <%= module_controller_offset %> def handle(request, response)
11
- <%= module_controller_offset %> response.body = self.class.name
12
- <%- end -%>
13
- <%= module_controller_offset %> end
14
- <%= module_controller_offset %>end
15
- <%= module_controller_end %>
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_slice_name %>
4
- module Actions
5
- <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_slice_name %>::Action
7
- <%- if bundled_views? -%>
8
- <%= module_controller_offset %> def handle(request, response)
9
- <%- else -%>
10
- <%= module_controller_offset %> def handle(request, response)
11
- <%= module_controller_offset %> response.body = self.class.name
12
- <%- end -%>
13
- <%= module_controller_offset %> end
14
- <%= module_controller_offset %>end
15
- <%= module_controller_end %>
16
- end
17
- end
@@ -1 +0,0 @@
1
- <h1><%= camelized_slice_name %>::Views::<%= camelized_controller_name %>::<%= camelized_action_name %></h1>
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_slice_name %>
4
- module Views
5
- <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_slice_name %>::View
7
- <%= module_controller_offset %>end
8
- <%= module_controller_end %>
9
- end
10
- end
File without changes
@@ -1 +0,0 @@
1
- <h1><%= camelized_app_name %>::Views::<%= camelized_controller_name %>::<%= camelized_action_name %></h1>
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_app_name %>
4
- module Views
5
- <%= module_controller_declaration %>
6
- <%= module_controller_offset %>class <%= camelized_action_name %> < <%= camelized_app_name %>::View
7
- <%= module_controller_offset %>end
8
- <%= module_controller_end %>
9
- end
10
- end
@@ -1,90 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dry/files/path"
4
- require_relative "slice_context"
5
- require_relative "../constants"
6
-
7
- module Hanami
8
- module CLI
9
- module Generators
10
- # @since 2.0.0
11
- # @api private
12
- module App
13
- # @since 2.0.0
14
- # @api private
15
- class ActionContext < SliceContext
16
- # @since 2.0.0
17
- # @api private
18
- def initialize(inflector, app, slice, controller, action)
19
- @controller = controller
20
- @action = action
21
- super(inflector, app, slice, nil)
22
- end
23
-
24
- # @since 2.0.0
25
- # @api private
26
- def camelized_controller_name
27
- controller.map do |token|
28
- inflector.camelize(token)
29
- end.join(NAMESPACE_SEPARATOR)
30
- end
31
-
32
- # @since 2.0.0
33
- # @api private
34
- def camelized_action_name
35
- inflector.camelize(action)
36
- end
37
-
38
- # @since 2.0.0
39
- # @api private
40
- def underscored_controller_name
41
- controller.map do |token|
42
- inflector.underscore(token)
43
- end
44
- end
45
-
46
- # @since 2.0.0
47
- # @api private
48
- def underscored_action_name
49
- inflector.underscore(action)
50
- end
51
-
52
- # @since 2.0.0
53
- # @api private
54
- def module_controller_declaration
55
- controller.each_with_index.map do |token, i|
56
- "#{NESTED_OFFSET}#{INDENTATION * i}module #{inflector.camelize(token)}"
57
- end.join($/)
58
- end
59
-
60
- # @since 2.0.0
61
- # @api private
62
- def module_controller_end
63
- controller.each_with_index.map do |_, i|
64
- "#{NESTED_OFFSET}#{INDENTATION * i}end"
65
- end.reverse.join($/)
66
- end
67
-
68
- # @since 2.0.0
69
- # @api private
70
- def module_controller_offset
71
- "#{NESTED_OFFSET}#{INDENTATION * controller.count}"
72
- end
73
-
74
- # @since 2.0.0
75
- # @api private
76
- def template_path
77
- Dry::Files::Path["slices", underscored_slice_name, "templates", *underscored_controller_name,
78
- "#{underscored_action_name}.html.erb"]
79
- end
80
-
81
- private
82
-
83
- attr_reader :controller
84
-
85
- attr_reader :action
86
- end
87
- end
88
- end
89
- end
90
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_app_name %>
4
- <%= module_namespace_declaration %>
5
- <%= module_namespace_offset %>class <%= camelized_name %>
6
- <%= module_namespace_offset %>end
7
- <%= module_namespace_end %>
8
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module <%= camelized_slice_name %>
4
- <%= module_namespace_declaration %>
5
- <%= module_namespace_offset %>class <%= camelized_name %>
6
- <%= module_namespace_offset %>end
7
- <%= module_namespace_end %>
8
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../constants"
4
-
5
- module Hanami
6
- module CLI
7
- module Generators
8
- module App
9
- class ComponentContext < SliceContext
10
- # @api private
11
- # @since 2.2.0
12
- attr_reader :key
13
-
14
- # @api private
15
- # @since 2.2.0
16
- def initialize(inflector, app, slice, key)
17
- @key = key
18
- super(inflector, app, slice, nil)
19
- end
20
-
21
- # @api private
22
- # @since 2.2.0
23
- def namespaces
24
- @namespaces ||= key.split(MATCHER_PATTERN)[..-2].map { inflector.underscore(_1) }
25
- end
26
-
27
- # @api private
28
- # @since 2.2.0
29
- def name
30
- @name ||= key.split(MATCHER_PATTERN)[-1]
31
- end
32
-
33
- # @api private
34
- # @since 2.2.0
35
- def camelized_namespace
36
- namespaces.map { inflector.camelize(_1) }.join(NAMESPACE_SEPARATOR)
37
- end
38
-
39
- # @api private
40
- # @since 2.2.0
41
- def camelized_name
42
- inflector.camelize(name)
43
- end
44
-
45
- # @api private
46
- # @since 2.2.0
47
- def underscored_namespace
48
- namespaces.map { inflector.underscore(_1) }
49
- end
50
-
51
- # @api private
52
- # @since 2.2.0
53
- def underscored_name
54
- inflector.underscore(name)
55
- end
56
-
57
- # @api private
58
- # @since 2.2.0
59
- def module_namespace_declaration
60
- namespaces.each_with_index.map { |token, i|
61
- "#{OFFSET}#{INDENTATION * i}module #{inflector.camelize(token)}"
62
- }.join($/)
63
- end
64
-
65
- # @api private
66
- # @since 2.2.0
67
- def module_namespace_end
68
- namespaces.each_with_index.map { |_, i|
69
- "#{OFFSET}#{INDENTATION * i}end"
70
- }.reverse.join($/)
71
- end
72
-
73
- # @api private
74
- # @since 2.2.0
75
- def module_namespace_offset
76
- "#{OFFSET}#{INDENTATION * namespaces.count}"
77
- end
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,9 +0,0 @@
1
- # auto_register: false
2
- # frozen_string_literal: true
3
-
4
- module <%= camelized_app_name %>
5
- module Views
6
- class Part < Hanami::View::Part
7
- end
8
- end
9
- end
@@ -1,13 +0,0 @@
1
- # auto_register: false
2
- # frozen_string_literal: true
3
-
4
- module <%= camelized_app_name %>
5
- module Views
6
- module Parts
7
- <%= module_namespace_declaration -%>
8
- <%= module_namespace_offset %>class <%= camelized_name %> < <%= camelized_app_name %>::Views::Part
9
- <%= module_namespace_offset %>end
10
- <%= module_namespace_end -%>
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- # auto_register: false
2
- # frozen_string_literal: true
3
-
4
- module <%= camelized_slice_name %>
5
- module Views
6
- class Part < <%= camelized_app_name %>::Views::Part
7
- end
8
- end
9
- end
@@ -1,13 +0,0 @@
1
- # auto_register: false
2
- # frozen_string_literal: true
3
-
4
- module <%= camelized_slice_name %>
5
- module Views
6
- module Parts
7
- <%= module_namespace_declaration -%>
8
- <%= module_namespace_offset %>class <%= camelized_name %> < <%= camelized_slice_name %>::Views::Part
9
- <%= module_namespace_offset %>end
10
- <%= module_namespace_end -%>
11
- end
12
- end
13
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dry/files/path"
4
- require_relative "slice_context"
5
- require_relative "../constants"
6
-
7
- module Hanami
8
- module CLI
9
- module Generators
10
- # @since 2.1.0
11
- # @api private
12
- module App
13
- # @since 2.1.0
14
- # @api private
15
- class PartContext < SliceContext
16
- # @since 2.1.0
17
- # @api private
18
- attr_reader :key
19
-
20
- # @since 2.1.0
21
- # @api private
22
- def initialize(inflector, app, slice, key)
23
- @key = key
24
- super(inflector, app, slice, nil)
25
- end
26
-
27
- # @since 2.1.0
28
- # @api private
29
- def namespaces
30
- @namespaces ||= key.split(KEY_SEPARATOR)[..-2]
31
- end
32
-
33
- # @since 2.1.0
34
- # @api private
35
- def name
36
- @name ||= key.split(KEY_SEPARATOR)[-1]
37
- end
38
-
39
- # @since 2.1.0
40
- # @api private
41
- def camelized_name
42
- inflector.camelize(name)
43
- end
44
-
45
- # @since 2.1.0
46
- # @api private
47
- def underscored_namespace
48
- namespaces.map { inflector.underscore(_1) }
49
- end
50
-
51
- # @since 2.1.0
52
- # @api private
53
- def underscored_name
54
- inflector.underscore(name)
55
- end
56
-
57
- # @since 2.1.0
58
- # @api private
59
- def module_namespace_declaration
60
- namespaces.each_with_index.map { |token, i|
61
- "#{NESTED_OFFSET}#{INDENTATION * i}module #{inflector.camelize(token)}"
62
- }.join($/)
63
- end
64
-
65
- # @since 2.1.0
66
- # @api private
67
- def module_namespace_end
68
- namespaces.each_with_index.map { |_, i|
69
- "#{NESTED_OFFSET}#{INDENTATION * i}end"
70
- }.reverse.join($/)
71
- end
72
-
73
- # @since 2.1.0
74
- # @api private
75
- def module_namespace_offset
76
- "#{NESTED_OFFSET}#{INDENTATION * namespaces.count}"
77
- end
78
- end
79
- end
80
- end
81
- end
82
- end