hanami 1.0.0 → 1.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/FEATURES.md +12 -0
  4. data/README.md +3 -0
  5. data/bin/hanami +3 -3
  6. data/hanami.gemspec +9 -9
  7. data/lib/hanami.rb +27 -0
  8. data/lib/hanami/action/routing_helpers.rb +1 -1
  9. data/lib/hanami/application_configuration.rb +0 -8
  10. data/lib/hanami/application_name.rb +1 -3
  11. data/lib/hanami/application_namespace.rb +1 -1
  12. data/lib/hanami/cli/commands.rb +101 -0
  13. data/lib/hanami/cli/commands/assets.rb +16 -0
  14. data/lib/hanami/cli/commands/assets/precompile.rb +42 -0
  15. data/lib/hanami/cli/commands/command.rb +180 -0
  16. data/lib/hanami/cli/commands/console.rb +95 -0
  17. data/lib/hanami/cli/commands/db.rb +30 -0
  18. data/lib/hanami/cli/commands/db/apply.rb +32 -0
  19. data/lib/hanami/cli/commands/db/console.rb +44 -0
  20. data/lib/hanami/cli/commands/db/create.rb +32 -0
  21. data/lib/hanami/cli/commands/db/drop.rb +32 -0
  22. data/lib/hanami/cli/commands/db/migrate.rb +39 -0
  23. data/lib/hanami/cli/commands/db/prepare.rb +32 -0
  24. data/lib/hanami/cli/commands/db/version.rb +32 -0
  25. data/lib/hanami/cli/commands/destroy.rb +26 -0
  26. data/lib/hanami/cli/commands/destroy/action.rb +131 -0
  27. data/lib/hanami/cli/commands/destroy/app.rb +159 -0
  28. data/lib/hanami/cli/commands/destroy/mailer.rb +74 -0
  29. data/lib/hanami/cli/commands/destroy/migration.rb +51 -0
  30. data/lib/hanami/cli/commands/destroy/model.rb +84 -0
  31. data/lib/hanami/cli/commands/generate.rb +28 -0
  32. data/lib/hanami/cli/commands/generate/action.rb +224 -0
  33. data/lib/hanami/cli/commands/generate/action/action.erb +8 -0
  34. data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +11 -0
  35. data/lib/hanami/{generators/action/action_spec.rspec.tt → cli/commands/generate/action/action_spec.rspec.erb} +1 -3
  36. data/lib/hanami/cli/commands/generate/action/action_without_view.erb +9 -0
  37. data/lib/hanami/cli/commands/generate/action/view.erb +5 -0
  38. data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +15 -0
  39. data/lib/hanami/{generators/action/view_spec.rspec.tt → cli/commands/generate/action/view_spec.rspec.erb} +2 -4
  40. data/lib/hanami/cli/commands/generate/app.rb +231 -0
  41. data/lib/hanami/{generators/app/application.rb.tt → cli/commands/generate/app/application.erb} +6 -6
  42. data/lib/hanami/{generators → cli/commands/generate}/app/favicon.ico +0 -0
  43. data/lib/hanami/{generators/action/template.tt → cli/commands/generate/app/gitkeep.erb} +0 -0
  44. data/lib/hanami/cli/commands/generate/app/layout.erb +7 -0
  45. data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +11 -0
  46. data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +11 -0
  47. data/lib/hanami/{generators/app/config/routes.rb.tt → cli/commands/generate/app/routes.erb} +0 -0
  48. data/lib/hanami/{generators/app/templates/application.html.erb.tt → cli/commands/generate/app/template.erb.erb} +1 -1
  49. data/lib/hanami/{generators/app/templates/application.html.haml.tt → cli/commands/generate/app/template.haml.erb} +1 -1
  50. data/lib/hanami/{generators/app/templates/application.html.slim.tt → cli/commands/generate/app/template.slim.erb} +1 -1
  51. data/lib/hanami/cli/commands/generate/mailer.rb +94 -0
  52. data/lib/hanami/cli/commands/generate/mailer/mailer.erb +7 -0
  53. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +7 -0
  54. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +5 -0
  55. data/lib/hanami/cli/commands/generate/migration.rb +41 -0
  56. data/lib/hanami/{generators/migration/migration.rb.tt → cli/commands/generate/migration/migration.erb} +0 -0
  57. data/lib/hanami/cli/commands/generate/model.rb +98 -0
  58. data/lib/hanami/cli/commands/generate/model/entity.erb +2 -0
  59. data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +5 -0
  60. data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +3 -0
  61. data/lib/hanami/{generators/model/migration.rb.tt → cli/commands/generate/model/migration.erb} +1 -1
  62. data/lib/hanami/cli/commands/generate/model/repository.erb +2 -0
  63. data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +5 -0
  64. data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +3 -0
  65. data/lib/hanami/cli/commands/generate/secret.rb +48 -0
  66. data/lib/hanami/cli/commands/new.rb +575 -0
  67. data/lib/hanami/{generators/application/container/.env.development.tt → cli/commands/new/.env.development.erb} +1 -1
  68. data/lib/hanami/{generators/application/container/.env.test.tt → cli/commands/new/.env.test.erb} +1 -1
  69. data/lib/hanami/{generators/app/config/initializers/.gitkeep → cli/commands/new/.gitkeep.erb} +0 -0
  70. data/lib/hanami/cli/commands/new/Gemfile.erb +57 -0
  71. data/lib/hanami/cli/commands/new/README.md.erb +35 -0
  72. data/lib/hanami/{generators/application/container/config.ru.tt → cli/commands/new/config.ru.erb} +0 -0
  73. data/lib/hanami/{generators/application/container/config/boot.rb.tt → cli/commands/new/config/boot.erb} +0 -0
  74. data/lib/hanami/{generators/application/container/config/environment.rb.tt → cli/commands/new/config/environment.erb} +8 -8
  75. data/lib/hanami/{generators/application/container/gitignore.tt → cli/commands/new/gitignore.erb} +0 -0
  76. data/lib/hanami/{generators/application/container/gitignore_with_sqlite.tt → cli/commands/new/gitignore_with_sqlite.erb} +0 -0
  77. data/lib/hanami/cli/commands/new/hanamirc.erb +3 -0
  78. data/lib/hanami/cli/commands/new/lib/project.erb +2 -0
  79. data/lib/hanami/{generators/application/container/Rakefile.minitest.tt → cli/commands/new/minitest/Rakefile.erb} +0 -0
  80. data/lib/hanami/{generators/application/container/features_helper.rb.minitest.tt → cli/commands/new/minitest/features_helper.erb} +0 -0
  81. data/lib/hanami/{generators/application/container/spec_helper.rb.minitest.tt → cli/commands/new/minitest/spec_helper.erb} +0 -0
  82. data/lib/hanami/{generators/application/container/Rakefile.rspec.tt → cli/commands/new/rspec/Rakefile.erb} +0 -0
  83. data/lib/hanami/{generators/application/container/capybara.rb.rspec.tt → cli/commands/new/rspec/capybara.erb} +0 -0
  84. data/lib/hanami/{generators/application/container/features_helper.rb.rspec.tt → cli/commands/new/rspec/features_helper.erb} +0 -0
  85. data/lib/hanami/{generators/application/container/rspec.rspec.tt → cli/commands/new/rspec/rspec.erb} +0 -0
  86. data/lib/hanami/{generators/application/container/spec_helper.rb.rspec.tt → cli/commands/new/rspec/spec_helper.erb} +0 -0
  87. data/lib/hanami/{generators/application/container/.gitignore → cli/commands/new/schema.sql.erb} +0 -0
  88. data/lib/hanami/cli/commands/project.rb +421 -0
  89. data/lib/hanami/cli/commands/routes.rb +21 -0
  90. data/lib/hanami/cli/commands/server.rb +39 -0
  91. data/lib/hanami/cli/commands/templates.rb +31 -0
  92. data/lib/hanami/cli/commands/version.rb +19 -0
  93. data/lib/hanami/common_logger.rb +14 -4
  94. data/lib/hanami/components.rb +39 -1
  95. data/lib/hanami/components/components.rb +36 -1
  96. data/lib/hanami/config/sessions.rb +1 -1
  97. data/lib/hanami/environment.rb +20 -50
  98. data/lib/hanami/hanamirc.rb +7 -30
  99. data/lib/hanami/middleware.rb +0 -26
  100. data/lib/hanami/static.rb +1 -1
  101. data/lib/hanami/templates/welcome.html.erb +1 -1
  102. data/lib/hanami/version.rb +1 -1
  103. data/lib/hanami/welcome.rb +1 -11
  104. metadata +125 -135
  105. data/lib/hanami/cli.rb +0 -154
  106. data/lib/hanami/cli_base.rb +0 -49
  107. data/lib/hanami/cli_sub_commands/assets.rb +0 -24
  108. data/lib/hanami/cli_sub_commands/db.rb +0 -138
  109. data/lib/hanami/cli_sub_commands/destroy.rb +0 -115
  110. data/lib/hanami/cli_sub_commands/generate.rb +0 -150
  111. data/lib/hanami/commands/apps.rb +0 -4
  112. data/lib/hanami/commands/assets/precompile.rb +0 -26
  113. data/lib/hanami/commands/command.rb +0 -77
  114. data/lib/hanami/commands/console.rb +0 -107
  115. data/lib/hanami/commands/db/apply.rb +0 -19
  116. data/lib/hanami/commands/db/console.rb +0 -41
  117. data/lib/hanami/commands/db/create.rb +0 -19
  118. data/lib/hanami/commands/db/drop.rb +0 -19
  119. data/lib/hanami/commands/db/migrate.rb +0 -30
  120. data/lib/hanami/commands/db/prepare.rb +0 -19
  121. data/lib/hanami/commands/db/version.rb +0 -19
  122. data/lib/hanami/commands/generate/abstract.rb +0 -76
  123. data/lib/hanami/commands/generate/action.rb +0 -322
  124. data/lib/hanami/commands/generate/app.rb +0 -154
  125. data/lib/hanami/commands/generate/mailer.rb +0 -131
  126. data/lib/hanami/commands/generate/migration.rb +0 -75
  127. data/lib/hanami/commands/generate/model.rb +0 -132
  128. data/lib/hanami/commands/generate/secret_token.rb +0 -37
  129. data/lib/hanami/commands/new/abstract.rb +0 -178
  130. data/lib/hanami/commands/new/app.rb +0 -129
  131. data/lib/hanami/commands/new/container.rb +0 -119
  132. data/lib/hanami/commands/routes.rb +0 -26
  133. data/lib/hanami/commands/server.rb +0 -32
  134. data/lib/hanami/generators/action/action.rb.tt +0 -8
  135. data/lib/hanami/generators/action/action_spec.minitest.tt +0 -12
  136. data/lib/hanami/generators/action/action_without_view.rb.tt +0 -9
  137. data/lib/hanami/generators/action/view.rb.tt +0 -5
  138. data/lib/hanami/generators/action/view_spec.minitest.tt +0 -16
  139. data/lib/hanami/generators/app/.gitkeep.tt +0 -1
  140. data/lib/hanami/generators/app/views/application_layout.rb.tt +0 -7
  141. data/lib/hanami/generators/application/container/.gitkeep +0 -1
  142. data/lib/hanami/generators/application/container/Gemfile.tt +0 -56
  143. data/lib/hanami/generators/application/container/config/initializers/.gitkeep +0 -0
  144. data/lib/hanami/generators/application/container/db/.gitkeep +0 -1
  145. data/lib/hanami/generators/application/container/hanamirc.tt +0 -4
  146. data/lib/hanami/generators/application/container/lib/chirp/entities/.gitkeep +0 -1
  147. data/lib/hanami/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
  148. data/lib/hanami/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
  149. data/lib/hanami/generators/application/container/lib/chirp/repositories/.gitkeep +0 -1
  150. data/lib/hanami/generators/application/container/lib/project.rb.tt +0 -2
  151. data/lib/hanami/generators/application/container/schema.sql.tt +0 -0
  152. data/lib/hanami/generators/database_config.rb +0 -114
  153. data/lib/hanami/generators/generatable.rb +0 -69
  154. data/lib/hanami/generators/generator.rb +0 -52
  155. data/lib/hanami/generators/mailer/mailer.rb.tt +0 -7
  156. data/lib/hanami/generators/mailer/mailer_spec.rb.minitest.tt +0 -7
  157. data/lib/hanami/generators/mailer/mailer_spec.rb.rspec.tt +0 -5
  158. data/lib/hanami/generators/mailer/template.html.tt +0 -0
  159. data/lib/hanami/generators/mailer/template.txt.tt +0 -0
  160. data/lib/hanami/generators/model/entity.rb.tt +0 -2
  161. data/lib/hanami/generators/model/entity_spec.minitest.tt +0 -5
  162. data/lib/hanami/generators/model/entity_spec.rspec.tt +0 -3
  163. data/lib/hanami/generators/model/repository.rb.tt +0 -2
  164. data/lib/hanami/generators/model/repository_spec.minitest.tt +0 -5
  165. data/lib/hanami/generators/model/repository_spec.rspec.tt +0 -3
  166. data/lib/hanami/generators/template_engine.rb +0 -44
  167. data/lib/hanami/generators/test_framework.rb +0 -55
@@ -1,26 +0,0 @@
1
- require 'hanami/commands/command'
2
-
3
- module Hanami
4
- # @api private
5
- module Commands
6
- # Display application/container routes.
7
- #
8
- # It is run with:
9
- #
10
- # `bundle exec hanami routes`
11
- #
12
- # @since 0.1.0
13
- # @api private
14
- class Routes < Command
15
- requires 'routes.inspector'
16
-
17
- # Display to STDOUT application routes
18
- #
19
- # @since 0.1.0
20
- # @api private
21
- def start
22
- puts requirements['routes.inspector'].inspect
23
- end
24
- end
25
- end
26
- end
@@ -1,32 +0,0 @@
1
- require 'hanami/commands/command'
2
-
3
- module Hanami
4
- # @api private
5
- module Commands
6
- # Server command (`hanami server`)
7
- #
8
- # @since 0.1.0
9
- # @api private
10
- class Server < Command
11
- requires 'code_reloading'
12
-
13
- # @api private
14
- def initialize(options)
15
- super(options)
16
-
17
- require 'hanami/server'
18
- @server = Hanami::Server.new
19
- end
20
-
21
- # @api private
22
- def start
23
- server.start
24
- end
25
-
26
- protected
27
-
28
- # @api private
29
- attr_reader :server
30
- end
31
- end
32
- end
@@ -1,8 +0,0 @@
1
- module <%= config[:app] %>::Controllers::<%= config[:controller] %>
2
- class <%= config[:action] %>
3
- include <%= config[:app] %>::Action
4
-
5
- def call(params)
6
- end
7
- end
8
- end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
- require_relative '<%= config[:relative_action_path] %>'
3
-
4
- describe <%= config[:app] %>::Controllers::<%= config[:controller] %>::<%= config[:action] %> do
5
- let(:action) { <%= config[:app] %>::Controllers::<%= config[:controller] %>::<%= config[:action] %>.new }
6
- let(:params) { Hash[] }
7
-
8
- it 'is successful' do
9
- response = action.call(params)
10
- response[0].must_equal 200
11
- end
12
- end
@@ -1,9 +0,0 @@
1
- module <%= config[:app] %>::Controllers::<%= config[:controller] %>
2
- class <%= config[:action] %>
3
- include <%= config[:app] %>::Action
4
-
5
- def call(params)
6
- self.body = 'OK'
7
- end
8
- end
9
- end
@@ -1,5 +0,0 @@
1
- module <%= config[:app] %>::Views::<%= config[:controller] %>
2
- class <%= config[:action] %>
3
- include <%= config[:app] %>::View
4
- end
5
- end
@@ -1,16 +0,0 @@
1
- require 'spec_helper'
2
- require_relative '<%= config[:relative_view_path] %>'
3
-
4
- describe <%= config[:app] %>::Views::<%= config[:controller] %>::<%= config[:action] %> do
5
- let(:exposures) { Hash[foo: 'bar'] }
6
- let(:template) { Hanami::View::Template.new('<%= config[:template_path] %>') }
7
- let(:view) { <%= config[:app] %>::Views::<%= config[:controller] %>::<%= config[:action] %>.new(template, exposures) }
8
- let(:rendered) { view.render }
9
-
10
- it 'exposes #foo' do
11
- skip 'This is an auto-generated test. Edit it and add your own tests.'
12
-
13
- # Example
14
- view.foo.must_equal exposures.fetch(:foo)
15
- end
16
- end
@@ -1,7 +0,0 @@
1
- module <%= config[:classified_app_name] %>
2
- module Views
3
- class ApplicationLayout
4
- include <%= config[:classified_app_name] %>::Layout
5
- end
6
- end
7
- end
@@ -1,56 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rake'
4
- <%- if config[:hanami_head] -%>
5
-
6
- gem 'hanami-utils', require: false, github: 'hanami/utils'
7
- gem 'hanami-router', require: false, github: 'hanami/router'
8
- gem 'hanami-validations', require: false, github: 'hanami/validations'
9
- gem 'hanami-helpers', require: false, github: 'hanami/helpers'
10
- gem 'hanami-controller', require: false, github: 'hanami/controller'
11
- gem 'hanami-view', require: false, github: 'hanami/view'
12
- gem 'hanami-model', require: false, github: 'hanami/model'
13
- gem 'hanami-mailer', require: false, github: 'hanami/mailer'
14
- gem 'hanami-assets', require: false, github: 'hanami/assets'
15
- gem 'hanami', github: 'hanami/hanami'
16
- <%- else -%>
17
- gem 'hanami', '<%= config[:hanami_version] %>'
18
- gem 'hanami-model', '<%= config[:hanami_model_version] %>'
19
- <%- end -%>
20
- <%- if config[:database_config][:gem] -%>
21
-
22
- gem '<%= config[:database_config][:gem] %>'
23
- <%- end -%>
24
- <%- case config[:template] -%>
25
- <%- when 'slim' -%>
26
-
27
- gem 'slim'
28
- <%- when 'haml' -%>
29
-
30
- gem 'haml'
31
- <%- end -%>
32
-
33
- <%- if config[:code_reloading] -%>
34
- group :development do
35
- # Code reloading
36
- # See: http://hanamirb.org/guides/projects/code-reloading
37
- gem 'shotgun'
38
- end
39
-
40
- <%- end -%>
41
- group :test, :development do
42
- gem 'dotenv', '~> 2.0'
43
- end
44
-
45
- group :test do
46
- <%- if config[:test] == 'rspec' -%>
47
- gem 'rspec'
48
- <%- else -%>
49
- gem 'minitest'
50
- <%- end -%>
51
- gem 'capybara'
52
- end
53
-
54
- group :production do
55
- # gem 'puma'
56
- end
@@ -1,4 +0,0 @@
1
- <%= Hanami::Hanamirc::PROJECT_NAME %>=<%= config[:project_name] %>
2
- <%= Hanami::Hanamirc::ARCHITECTURE_KEY %>=<%= Hanami::Hanamirc::DEFAULT_ARCHITECTURE %>
3
- <%= Hanami::Hanamirc::TEST_KEY %>=<%= config[:test] %>
4
- <%= Hanami::Hanamirc::TEMPLATE_KEY %>=<%= config[:template] %>
@@ -1,2 +0,0 @@
1
- module <%= config[:project_module] %>
2
- end
@@ -1,114 +0,0 @@
1
- require 'shellwords'
2
-
3
- module Hanami
4
- # @api private
5
- module Generators
6
- # @api private
7
- class DatabaseConfig
8
-
9
- # @api private
10
- SUPPORTED_ENGINES = {
11
- 'mysql' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' },
12
- 'mysql2' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' },
13
- 'postgresql' => { type: :sql, mri: 'pg', jruby: 'jdbc-postgres' },
14
- 'postgres' => { type: :sql, mri: 'pg', jruby: 'jdbc-postgres' },
15
- 'sqlite' => { type: :sql, mri: 'sqlite3', jruby: 'jdbc-sqlite3' },
16
- 'sqlite3' => { type: :sql, mri: 'sqlite3', jruby: 'jdbc-sqlite3' }
17
- }.freeze
18
-
19
- # @api private
20
- DEFAULT_ENGINE = 'sqlite'.freeze
21
-
22
- # @api private
23
- attr_reader :engine
24
- # @api private
25
- attr_reader :name
26
-
27
- # @api private
28
- def initialize(engine, name)
29
- @engine = engine
30
- @name = name
31
-
32
- unless SUPPORTED_ENGINES.key?(engine.to_s) # rubocop:disable Style/GuardClause
33
- warn %(`#{engine}' is not a valid database engine)
34
- exit(1)
35
- end
36
- end
37
-
38
- # @api private
39
- def to_hash
40
- {
41
- gem: gem,
42
- uri: uri,
43
- type: type
44
- }
45
- end
46
-
47
- # @api private
48
- def type
49
- SUPPORTED_ENGINES[engine][:type]
50
- end
51
-
52
- # @api private
53
- def sql?
54
- type == :sql
55
- end
56
-
57
- # @api private
58
- def sqlite?
59
- ['sqlite', 'sqlite3'].include?(engine)
60
- end
61
-
62
- private
63
-
64
- # @api private
65
- def platform
66
- Hanami::Utils.jruby? ? :jruby : :mri
67
- end
68
-
69
- # @api private
70
- def platform_prefix
71
- 'jdbc:'.freeze if Hanami::Utils.jruby?
72
- end
73
-
74
- # @api private
75
- def uri
76
- {
77
- development: environment_uri(:development),
78
- test: environment_uri(:test)
79
- }
80
- end
81
-
82
- # @api private
83
- def gem
84
- SUPPORTED_ENGINES[engine][platform]
85
- end
86
-
87
- # @api private
88
- def base_uri
89
- case engine
90
- when 'mysql', 'mysql2'
91
- if Hanami::Utils.jruby?
92
- "mysql://localhost/#{ name }"
93
- else
94
- "mysql2://localhost/#{ name }"
95
- end
96
- when 'postgresql', 'postgres'
97
- "postgresql://localhost/#{ name }"
98
- when 'sqlite', 'sqlite3'
99
- "sqlite://db/#{ Shellwords.escape(name) }"
100
- end
101
- end
102
-
103
- # @api private
104
- def environment_uri(environment)
105
- case engine
106
- when 'sqlite', 'sqlite3'
107
- "#{ platform_prefix }#{ base_uri }_#{ environment }.sqlite"
108
- else
109
- "#{ platform_prefix if sql? }#{ base_uri }_#{ environment }"
110
- end
111
- end
112
- end
113
- end
114
- end
@@ -1,69 +0,0 @@
1
- require 'hanami/generators/generator'
2
-
3
- module Hanami
4
- # @api private
5
- module Generators
6
- # @api private
7
- module Generatable
8
-
9
- # @api private
10
- def start
11
- map_templates
12
- process_templates
13
- end
14
-
15
- # @api private
16
- def destroy
17
- generator.behavior = :revoke
18
- self
19
- end
20
-
21
- # @api private
22
- def generator
23
- @generator ||= Hanami::Generators::Generator.new(template_source_path, target_path)
24
- end
25
-
26
- # @api private
27
- def map_templates
28
- raise NotImplementedError, "must implement the map_templates method"
29
- end
30
-
31
- # @api private
32
- def add_mapping(source, target)
33
- generator.add_mapping(source, target)
34
- end
35
-
36
- # @api private
37
- def process_templates
38
- generator.process_templates(template_options)
39
- post_process_templates
40
- end
41
-
42
- # @api private
43
- def post_process_templates
44
- nil
45
- end
46
-
47
- # @api private
48
- def template_options
49
- {}
50
- end
51
-
52
- # @api private
53
- def template_source_path
54
- raise NotImplementedError, "must implement the template_source_path method"
55
- end
56
-
57
- # @api private
58
- def target_path
59
- raise NotImplementedError, "must implement the target_path method"
60
- end
61
-
62
- # @api private
63
- def argument_blank?(value)
64
- Hanami::Utils::Blank.blank?(value)
65
- end
66
-
67
- end
68
- end
69
- end
@@ -1,52 +0,0 @@
1
- require 'thor'
2
- require 'forwardable'
3
-
4
- module Hanami
5
- # @api private
6
- module Generators
7
- # @api private
8
- class Generator
9
-
10
- extend Forwardable
11
-
12
- # @api private
13
- def_delegators :@processor, :run, :behavior=, :inject_into_file, :append_to_file, :prepend_to_file, :gsub_file
14
-
15
- # @api private
16
- class Processor < Thor
17
- include Thor::Actions
18
- end
19
-
20
- # @api private
21
- def initialize(template_source_path, target_path)
22
- @template_source_path = template_source_path
23
- @target_path = target_path
24
- @template_mappings = []
25
- @processor = Processor.new
26
- @processor.class.source_root(@template_source_path)
27
- end
28
-
29
- # @api private
30
- def add_mapping(source, target)
31
- @template_mappings << [source, target]
32
- end
33
-
34
- # @api private
35
- def process_templates(options = {})
36
- @template_mappings.each do |src, dst|
37
- @processor.template(@template_source_path.join(src), @target_path.join(dst), options)
38
- end
39
- end
40
-
41
- # Modelled after Thor's `inject_into_class`
42
- # @api private
43
- def prepend_after_leading_comments(path, *args, &block)
44
- config = args.last.is_a?(Hash) ? args.pop : {}
45
- # Either prepend after the last comment line,
46
- # or the first line in the file, if there are no comments
47
- config[:after] = /\A(?:^#.*$\s)*/
48
- @processor.insert_into_file(path, *(args << config), &block)
49
- end
50
- end
51
- end
52
- end