hanami-cli 2.2.1 → 2.3.0.beta1
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/.github/workflows/ci.yml +9 -0
- data/CHANGELOG.md +33 -0
- data/Gemfile +3 -1
- data/hanami-cli.gemspec +2 -0
- data/lib/hanami/cli/command.rb +5 -11
- data/lib/hanami/cli/commands/app/command.rb +5 -5
- data/lib/hanami/cli/commands/app/console.rb +1 -0
- data/lib/hanami/cli/commands/app/db/command.rb +0 -1
- data/lib/hanami/cli/commands/app/db/drop.rb +2 -2
- data/lib/hanami/cli/commands/app/db/rollback.rb +204 -0
- data/lib/hanami/cli/commands/app/db/utils/mysql.rb +3 -2
- data/lib/hanami/cli/commands/app/db/utils/postgres.rb +3 -1
- data/lib/hanami/cli/commands/app/generate/action.rb +32 -40
- data/lib/hanami/cli/commands/app/generate/command.rb +54 -17
- data/lib/hanami/cli/commands/app/generate/component.rb +4 -19
- data/lib/hanami/cli/commands/app/generate/part.rb +4 -21
- data/lib/hanami/cli/commands/app/generate/slice.rb +2 -2
- data/lib/hanami/cli/commands/app/generate/view.rb +5 -24
- data/lib/hanami/cli/commands/app/server.rb +0 -1
- data/lib/hanami/cli/commands/app.rb +1 -0
- data/lib/hanami/cli/commands/gem/new.rb +34 -3
- data/lib/hanami/cli/errors.rb +26 -0
- data/lib/hanami/cli/files.rb +20 -6
- data/lib/hanami/cli/generators/app/action.rb +78 -101
- data/lib/hanami/cli/generators/app/component.rb +11 -33
- data/lib/hanami/cli/generators/app/migration.rb +1 -1
- data/lib/hanami/cli/generators/app/operation.rb +4 -5
- data/lib/hanami/cli/generators/app/part.rb +42 -65
- data/lib/hanami/cli/generators/app/relation.rb +4 -5
- data/lib/hanami/cli/generators/app/repo.rb +3 -5
- data/lib/hanami/cli/generators/app/ruby_class_file.rb +32 -0
- data/lib/hanami/cli/generators/app/ruby_file.rb +128 -0
- data/lib/hanami/cli/generators/app/ruby_module_file.rb +28 -0
- data/lib/hanami/cli/generators/app/slice.rb +130 -37
- data/lib/hanami/cli/generators/app/struct.rb +3 -4
- data/lib/hanami/cli/generators/app/view.rb +40 -45
- data/lib/hanami/cli/generators/context.rb +6 -0
- data/lib/hanami/cli/generators/gem/app/assets.js +14 -13
- data/lib/hanami/cli/generators/gem/app/dev +1 -1
- data/lib/hanami/cli/generators/gem/app/gemfile.erb +5 -0
- data/lib/hanami/cli/generators/gem/app/gitignore.erb +3 -1
- data/lib/hanami/cli/generators/gem/app/rakefile.erb +3 -0
- data/lib/hanami/cli/generators/gem/app/readme.erb +14 -0
- data/lib/hanami/cli/generators/gem/app.rb +40 -37
- data/lib/hanami/cli/ruby_file_generator.rb +17 -8
- data/lib/hanami/cli/server.rb +15 -1
- data/lib/hanami/cli/version.rb +1 -1
- data/lib/hanami/console/context.rb +5 -0
- metadata +35 -41
- data/lib/hanami/cli/generators/app/action/action.erb +0 -17
- data/lib/hanami/cli/generators/app/action/slice_action.erb +0 -17
- data/lib/hanami/cli/generators/app/action/slice_template.html.erb +0 -1
- data/lib/hanami/cli/generators/app/action/slice_view.erb +0 -10
- data/lib/hanami/cli/generators/app/action/template.erb +0 -0
- data/lib/hanami/cli/generators/app/action/template.html.erb +0 -1
- data/lib/hanami/cli/generators/app/action/view.erb +0 -10
- data/lib/hanami/cli/generators/app/action_context.rb +0 -90
- data/lib/hanami/cli/generators/app/component/component.erb +0 -8
- data/lib/hanami/cli/generators/app/component/slice_component.erb +0 -8
- data/lib/hanami/cli/generators/app/component_context.rb +0 -82
- data/lib/hanami/cli/generators/app/part/app_base_part.erb +0 -9
- data/lib/hanami/cli/generators/app/part/app_part.erb +0 -13
- data/lib/hanami/cli/generators/app/part/slice_base_part.erb +0 -9
- data/lib/hanami/cli/generators/app/part/slice_part.erb +0 -13
- data/lib/hanami/cli/generators/app/part_context.rb +0 -82
- data/lib/hanami/cli/generators/app/ruby_file_writer.rb +0 -151
- data/lib/hanami/cli/generators/app/slice/action.erb +0 -7
- data/lib/hanami/cli/generators/app/slice/app_css.erb +0 -5
- data/lib/hanami/cli/generators/app/slice/app_js.erb +0 -1
- data/lib/hanami/cli/generators/app/slice/app_layout.erb +0 -18
- data/lib/hanami/cli/generators/app/slice/helpers.erb +0 -10
- data/lib/hanami/cli/generators/app/slice/keep.erb +0 -0
- data/lib/hanami/cli/generators/app/slice/operation.erb +0 -7
- data/lib/hanami/cli/generators/app/slice/relation.erb +0 -8
- data/lib/hanami/cli/generators/app/slice/repo.erb +0 -8
- data/lib/hanami/cli/generators/app/slice/routes.erb +0 -3
- data/lib/hanami/cli/generators/app/slice/struct.erb +0 -8
- data/lib/hanami/cli/generators/app/slice/view.erb +0 -7
- data/lib/hanami/cli/generators/app/slice_context.rb +0 -72
- data/lib/hanami/cli/generators/app/view/app_template.html.erb +0 -1
- data/lib/hanami/cli/generators/app/view/app_view.erb +0 -10
- data/lib/hanami/cli/generators/app/view/slice_template.html.erb +0 -1
- data/lib/hanami/cli/generators/app/view/slice_view.erb +0 -10
- data/lib/hanami/cli/generators/app/view_context.rb +0 -88
@@ -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,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,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,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
|
@@ -1,151 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "erb"
|
4
|
-
require "dry/files"
|
5
|
-
require_relative "../constants"
|
6
|
-
require_relative "../../errors"
|
7
|
-
|
8
|
-
module Hanami
|
9
|
-
module CLI
|
10
|
-
module Generators
|
11
|
-
module App
|
12
|
-
# @since 2.2.0
|
13
|
-
# @api private
|
14
|
-
class RubyFileWriter
|
15
|
-
# @since 2.2.0
|
16
|
-
# @api private
|
17
|
-
def initialize(fs:, inflector:)
|
18
|
-
@fs = fs
|
19
|
-
@inflector = inflector
|
20
|
-
end
|
21
|
-
|
22
|
-
# @since 2.2.0
|
23
|
-
# @api private
|
24
|
-
def call(key:, namespace:, base_path:, relative_parent_class:, extra_namespace: nil, body: [])
|
25
|
-
ClassFile.new(
|
26
|
-
fs: fs,
|
27
|
-
inflector: inflector,
|
28
|
-
key: key,
|
29
|
-
namespace: namespace,
|
30
|
-
base_path: base_path,
|
31
|
-
relative_parent_class: relative_parent_class,
|
32
|
-
extra_namespace: extra_namespace,
|
33
|
-
body: body,
|
34
|
-
).write
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
# @since 2.2.0
|
40
|
-
# @api private
|
41
|
-
attr_reader :fs, :inflector
|
42
|
-
end
|
43
|
-
|
44
|
-
class ClassFile
|
45
|
-
def initialize(
|
46
|
-
fs:,
|
47
|
-
inflector:,
|
48
|
-
key:,
|
49
|
-
namespace:,
|
50
|
-
base_path:,
|
51
|
-
relative_parent_class:,
|
52
|
-
extra_namespace: nil,
|
53
|
-
body: []
|
54
|
-
)
|
55
|
-
@fs = fs
|
56
|
-
@inflector = inflector
|
57
|
-
@key = key
|
58
|
-
@namespace = namespace
|
59
|
-
@base_path = base_path
|
60
|
-
@extra_namespace = extra_namespace&.downcase
|
61
|
-
@relative_parent_class = relative_parent_class
|
62
|
-
@body = body
|
63
|
-
end
|
64
|
-
|
65
|
-
def write
|
66
|
-
fs.write(path, file_contents)
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
# @since 2.2.0
|
72
|
-
# @api private
|
73
|
-
attr_reader(
|
74
|
-
:fs,
|
75
|
-
:inflector,
|
76
|
-
:key,
|
77
|
-
:namespace,
|
78
|
-
:base_path,
|
79
|
-
:extra_namespace,
|
80
|
-
:relative_parent_class,
|
81
|
-
:body,
|
82
|
-
)
|
83
|
-
|
84
|
-
# @since 2.2.0
|
85
|
-
# @api private
|
86
|
-
def file_contents
|
87
|
-
class_definition(
|
88
|
-
class_name: class_name,
|
89
|
-
local_namespaces: local_namespaces,
|
90
|
-
)
|
91
|
-
end
|
92
|
-
|
93
|
-
# @since 2.2.0
|
94
|
-
# @api private
|
95
|
-
def class_name
|
96
|
-
key.split(KEY_SEPARATOR)[-1]
|
97
|
-
end
|
98
|
-
|
99
|
-
# @since 2.2.0
|
100
|
-
# @api private
|
101
|
-
def local_namespaces
|
102
|
-
Array(extra_namespace) + key.split(KEY_SEPARATOR)[..-2]
|
103
|
-
end
|
104
|
-
|
105
|
-
# @since 2.2.0
|
106
|
-
# @api private
|
107
|
-
def directory
|
108
|
-
@directory ||= if local_namespaces.any?
|
109
|
-
fs.join(base_path, local_namespaces)
|
110
|
-
else
|
111
|
-
base_path
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
# @since 2.2.0
|
116
|
-
# @api private
|
117
|
-
def path
|
118
|
-
fs.join(directory, "#{class_name}.rb")
|
119
|
-
end
|
120
|
-
|
121
|
-
# @since 2.2.0
|
122
|
-
# @api private
|
123
|
-
def class_definition(class_name:, local_namespaces:)
|
124
|
-
container_module = normalize(namespace)
|
125
|
-
|
126
|
-
modules = local_namespaces
|
127
|
-
.map { normalize(_1) }
|
128
|
-
.compact
|
129
|
-
.prepend(container_module)
|
130
|
-
|
131
|
-
parent_class = [container_module, relative_parent_class].join("::")
|
132
|
-
|
133
|
-
RubyFileGenerator.class(
|
134
|
-
normalize(class_name),
|
135
|
-
parent_class: parent_class,
|
136
|
-
modules: modules,
|
137
|
-
header: ["# frozen_string_literal: true"],
|
138
|
-
body: body
|
139
|
-
)
|
140
|
-
end
|
141
|
-
|
142
|
-
# @since 2.2.0
|
143
|
-
# @api private
|
144
|
-
def normalize(name)
|
145
|
-
inflector.camelize(name).gsub(/[^\p{Alnum}]/, "")
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
import "../css/app.css";
|
@@ -1,18 +0,0 @@
|
|
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 %> - <%= humanized_slice_name %></title>
|
7
|
-
<%- if bundled_assets? -%>
|
8
|
-
<%%= favicon_tag %>
|
9
|
-
<%= stylesheet_erb_tag %>
|
10
|
-
<%- end -%>
|
11
|
-
</head>
|
12
|
-
<body>
|
13
|
-
<%%= yield %>
|
14
|
-
<%- if bundled_assets? -%>
|
15
|
-
<%= javascript_erb_tag %>
|
16
|
-
<%- end -%>
|
17
|
-
</body>
|
18
|
-
</html>
|
File without changes
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../context"
|
4
|
-
require_relative "../constants"
|
5
|
-
|
6
|
-
module Hanami
|
7
|
-
module CLI
|
8
|
-
module Generators
|
9
|
-
module App
|
10
|
-
# @since 2.0.0
|
11
|
-
# @api private
|
12
|
-
class SliceContext < Generators::Context
|
13
|
-
# @since 2.0.0
|
14
|
-
# @api private
|
15
|
-
def initialize(inflector, app, slice, url, **options)
|
16
|
-
@slice = slice
|
17
|
-
@url = url
|
18
|
-
super(inflector, app, **options)
|
19
|
-
end
|
20
|
-
|
21
|
-
# @since 2.0.0
|
22
|
-
# @api private
|
23
|
-
def camelized_slice_name
|
24
|
-
inflector.camelize(slice)
|
25
|
-
end
|
26
|
-
|
27
|
-
# @since 2.0.0
|
28
|
-
# @api private
|
29
|
-
def underscored_slice_name
|
30
|
-
inflector.underscore(slice)
|
31
|
-
end
|
32
|
-
|
33
|
-
# @since 2.1.0
|
34
|
-
# @api private
|
35
|
-
def humanized_slice_name
|
36
|
-
inflector.humanize(slice)
|
37
|
-
end
|
38
|
-
|
39
|
-
# @since 2.1.0
|
40
|
-
# @api private
|
41
|
-
def stylesheet_erb_tag
|
42
|
-
%(<%= stylesheet_tag "app" %>)
|
43
|
-
end
|
44
|
-
|
45
|
-
# @since 2.1.0
|
46
|
-
# @api private
|
47
|
-
def javascript_erb_tag
|
48
|
-
%(<%= javascript_tag "app" %>)
|
49
|
-
end
|
50
|
-
|
51
|
-
# @since 2.2.0
|
52
|
-
# @api private
|
53
|
-
def generate_db?
|
54
|
-
!options.fetch(:skip_db, false)
|
55
|
-
end
|
56
|
-
|
57
|
-
# @since 2.2.0
|
58
|
-
# @api private
|
59
|
-
def generate_route?
|
60
|
-
!options.fetch(:skip_route, false)
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
attr_reader :slice
|
66
|
-
|
67
|
-
attr_reader :url
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<h1><%= camelized_app_name %>::Views::<%= camelized_namespace %>::<%= camelized_name %></h1>
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module <%= camelized_app_name %>
|
4
|
-
module Views
|
5
|
-
<%= module_namespace_declaration %>
|
6
|
-
<%= module_namespace_offset %>class <%= camelized_name %> < <%= camelized_app_name %>::View
|
7
|
-
<%= module_namespace_offset %>end
|
8
|
-
<%= module_namespace_end %>
|
9
|
-
end
|
10
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<h1><%= camelized_slice_name %>::Views::<%= camelized_namespace %>::<%= camelized_name %></h1>
|