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,37 +0,0 @@
1
- require 'hanami/commands/generate/abstract'
2
- require 'hanami/application_name'
3
- require 'securerandom'
4
-
5
- module Hanami
6
- # @api private
7
- module Commands
8
- # @api private
9
- class Generate
10
- # @api private
11
- class SecretToken
12
-
13
- # @api private
14
- def initialize(application_name)
15
- @application_name = application_name
16
- end
17
-
18
- # @api private
19
- def start
20
- if Hanami::Utils::Blank.blank?(@application_name)
21
- puts SecureRandom.hex(32)
22
- else
23
- puts "Set the following environment variable to provide the secret token:"
24
- puts %(#{ upcase_app_name }_SESSIONS_SECRET="#{ SecureRandom.hex(32) }")
25
- end
26
- end
27
-
28
- private
29
- # @api private
30
- def upcase_app_name
31
- @application_name.upcase
32
- end
33
-
34
- end
35
- end
36
- end
37
- end
@@ -1,178 +0,0 @@
1
- require 'shellwords'
2
- require 'hanami/application_name'
3
- require 'hanami/generators/database_config'
4
- require 'hanami/generators/generatable'
5
- require 'hanami/generators/test_framework'
6
- require 'hanami/generators/template_engine'
7
- require 'hanami/utils'
8
- require 'hanami/utils/hash'
9
- require 'hanami/utils/string'
10
-
11
- module Hanami
12
- # @api private
13
- module Commands
14
- # @api private
15
- class New
16
- # @api private
17
- class Abstract
18
-
19
- include Hanami::Generators::Generatable
20
-
21
- # @api private
22
- DEFAULT_ARCHITECTURE = 'container'.freeze
23
- # @api private
24
- DEFAULT_APPLICATION_BASE_URL = '/'.freeze
25
-
26
- # @api private
27
- attr_reader :options
28
- # @api private
29
- attr_reader :target_path
30
- # @api private
31
- attr_reader :database_config
32
- # @api private
33
- attr_reader :test_framework
34
- # @api private
35
- attr_reader :hanami_model_version
36
- # @api private
37
- attr_reader :template_engine
38
-
39
- # @api private
40
- def initialize(options, name)
41
- @options = Hanami::Utils::Hash.new(options).symbolize!
42
- @name = name
43
- @options[:database] ||= Hanami::Generators::DatabaseConfig::DEFAULT_ENGINE
44
-
45
- assert_options!
46
- assert_name!
47
- assert_architecture!
48
-
49
- @hanami_model_version = '~> 1.0'
50
- @database_config = Hanami::Generators::DatabaseConfig.new(options[:database], project_name)
51
- @test_framework = Hanami::Generators::TestFramework.new(hanamirc, @options[:test])
52
- @template_engine = Hanami::Generators::TemplateEngine.new(hanamirc, @options[:template])
53
- end
54
-
55
- # @api private
56
- def start
57
- FileUtils.mkdir_p(project_directory)
58
- Dir.chdir(project_directory) do
59
- @target_path = Pathname.pwd
60
-
61
- super
62
- end
63
- end
64
-
65
- private
66
-
67
- # @api private
68
- def hanamirc
69
- @hanamirc ||= Hanamirc.new(Pathname.new('.'))
70
- end
71
-
72
- # @api private
73
- def start_in_app_dir
74
- raise NotImplementedError
75
- end
76
-
77
- # @api private
78
- def add_sql_templates
79
- return if !database_config.sql?
80
-
81
- add_mapping('schema.sql.tt', 'db/schema.sql')
82
- end
83
-
84
- # @api private
85
- def add_git_templates
86
- return if git_dir_present?
87
-
88
- source = database_config.sqlite? ? 'gitignore_with_sqlite.tt' : 'gitignore.tt'
89
- target = '.gitignore'
90
- add_mapping(source, target)
91
- end
92
-
93
- # @api private
94
- def real_project_name
95
- @name == '.' ? ::File.basename(Dir.getwd) : @name
96
- end
97
-
98
- # @api private
99
- def project_name
100
- ApplicationName.new(real_project_name)
101
- end
102
-
103
- # @api private
104
- def project_module
105
- Utils::String.new(project_name).classify
106
- end
107
-
108
- # @api private
109
- def project_directory
110
- @name == '.' ? '.' : project_name
111
- end
112
-
113
- # @api private
114
- def target
115
- Pathname.new('.')
116
- end
117
-
118
- # @api private
119
- def init_git
120
- return if git_dir_present?
121
-
122
- generator.run("git init #{Shellwords.escape(target)}", capture: true)
123
- end
124
-
125
- # @api private
126
- def git_dir_present?
127
- File.directory?(target.join('.git'))
128
- end
129
-
130
- # @api private
131
- def hanami_version
132
- Hanami::Version.gem_requirement
133
- end
134
-
135
- # @api private
136
- def hanami_head?
137
- options.fetch(:hanami_head, false)
138
- end
139
-
140
- # @api private
141
- def code_reloading?
142
- !Hanami::Utils.jruby?
143
- end
144
-
145
- # @api private
146
- def architecture
147
- options.fetch(:architecture, DEFAULT_ARCHITECTURE)
148
- end
149
-
150
- # @api private
151
- def assert_name!
152
- if argument_blank?(@name) || @name.include?(File::SEPARATOR)
153
- raise ArgumentError.new("APPLICATION_NAME is required and must not contain #{File::SEPARATOR}.")
154
- end
155
- end
156
-
157
- # @api private
158
- def assert_architecture!
159
- if !['app', 'container'].include?(architecture)
160
- raise ArgumentError.new("Architecture must be one of 'app', 'container' but was '#{architecture}'")
161
- end
162
- end
163
-
164
- # @api private
165
- def application_base_url
166
- options[:application_base_url] || DEFAULT_APPLICATION_BASE_URL
167
- end
168
-
169
- # @api private
170
- def assert_options!
171
- if options.nil?
172
- raise ArgumentError.new('options must not be nil')
173
- end
174
- end
175
- end
176
- end
177
- end
178
- end
@@ -1,129 +0,0 @@
1
- require 'hanami/commands/new/abstract'
2
-
3
- module Hanami
4
- # @api private
5
- module Commands
6
- # @api private
7
- class New
8
- # @api private
9
- class App < Abstract
10
-
11
- # @api private
12
- def initialize(options, name)
13
- super(options, name)
14
- end
15
-
16
- # @api private
17
- def map_templates
18
- add_application_templates
19
- add_empty_directories
20
- add_test_templates
21
- add_sql_templates
22
- add_git_templates
23
- end
24
-
25
- # @api private
26
- def template_options
27
- {
28
- app_name: app_name,
29
- upcase_app_name: upcase_app_name,
30
- classified_app_name: classified_app_name,
31
- application_base_url: application_base_url,
32
- hanami_head: hanami_head?,
33
- test: test_framework.framework,
34
- database: database_config.type,
35
- database_config: database_config.to_hash,
36
- hanami_model_version: hanami_model_version,
37
- hanami_version: hanami_version,
38
- template: template_engine.name
39
- }
40
- end
41
-
42
- # @api private
43
- def post_process_templates
44
- init_git
45
- end
46
-
47
- private
48
-
49
- # @api private
50
- def add_application_templates
51
- add_mapping('hanamirc.tt', '.hanamirc')
52
- add_mapping('.env.development.tt', '.env.development')
53
- add_mapping('.env.test.tt', '.env.test')
54
- add_mapping('Gemfile.tt', 'Gemfile')
55
- add_mapping('config.ru.tt', 'config.ru')
56
- add_mapping('config/environment.rb.tt', 'config/environment.rb')
57
- add_mapping('lib/app_name.rb.tt', "lib/#{ app_name }.rb")
58
- add_mapping('config/application.rb.tt', 'config/application.rb')
59
- add_mapping('config/routes.rb.tt', 'config/routes.rb')
60
- add_mapping('views/application_layout.rb.tt', 'app/views/application_layout.rb')
61
- add_mapping("templates/application.html.#{ template_engine.name }.tt", "app/templates/application.html.#{ template_engine.name }")
62
- add_mapping('favicon.ico', 'app/assets/favicon.ico')
63
- end
64
-
65
- # @api private
66
- def add_test_templates
67
- if test_framework.rspec?
68
- add_mapping('Rakefile.rspec.tt', 'Rakefile')
69
- add_mapping('rspec.rspec.tt', '.rspec')
70
- add_mapping('spec_helper.rb.rspec.tt', 'spec/spec_helper.rb')
71
- add_mapping('features_helper.rb.rspec.tt', 'spec/features_helper.rb')
72
- add_mapping('capybara.rb.rspec.tt', 'spec/support/capybara.rb')
73
- else
74
- add_mapping('Rakefile.minitest.tt', 'Rakefile')
75
- add_mapping('spec_helper.rb.minitest.tt', 'spec/spec_helper.rb')
76
- add_mapping('features_helper.rb.minitest.tt', 'spec/features_helper.rb')
77
- end
78
- end
79
-
80
- # @api private
81
- def add_empty_directories
82
- add_mapping('.gitkeep', 'config/initializers/.gitkeep')
83
- add_mapping('.gitkeep', 'app/controllers/.gitkeep')
84
- add_mapping('.gitkeep', 'app/views/.gitkeep')
85
- add_mapping('.gitkeep', 'app/assets/images/.gitkeep')
86
- add_mapping('.gitkeep', 'app/assets/javascripts/.gitkeep')
87
- add_mapping('.gitkeep', 'app/assets/stylesheets/.gitkeep')
88
- add_mapping('.gitkeep', "lib/#{ app_name }/entities/.gitkeep")
89
- add_mapping('.gitkeep', "lib/#{ app_name }/repositories/.gitkeep")
90
- add_mapping('.gitkeep', "lib/#{ app_name }/mailers/.gitkeep")
91
- add_mapping('.gitkeep', "lib/#{ app_name }/mailers/templates/.gitkeep")
92
- add_mapping('.gitkeep', 'public/.gitkeep')
93
-
94
- add_mapping('.gitkeep', 'spec/features/.gitkeep')
95
- add_mapping('.gitkeep', 'spec/controllers/.gitkeep')
96
- add_mapping('.gitkeep', 'spec/views/.gitkeep')
97
- add_mapping('.gitkeep', "spec/#{ app_name }/entities/.gitkeep")
98
- add_mapping('.gitkeep', "spec/#{ app_name }/repositories/.gitkeep")
99
- add_mapping('.gitkeep', "spec/#{ app_name }/mailers/.gitkeep")
100
- add_mapping('.gitkeep', 'spec/support/.gitkeep')
101
-
102
- if database_config.sql?
103
- add_mapping('.gitkeep', 'db/migrations/.gitkeep')
104
- else
105
- add_mapping('.gitkeep', 'db/.gitkeep')
106
- end
107
- end
108
-
109
- # @api private
110
- def template_source_path
111
- Pathname.new(::File.dirname(__FILE__)).join('..', '..', 'generators', 'application', 'app').realpath
112
- end
113
-
114
- # @api private
115
- def upcase_app_name
116
- app_name.to_env_s
117
- end
118
-
119
- # @api private
120
- def classified_app_name
121
- Utils::String.new(app_name).classify.tr('::', '')
122
- end
123
-
124
- # @api private
125
- alias app_name project_name
126
- end
127
- end
128
- end
129
- end
@@ -1,119 +0,0 @@
1
- require 'hanami/commands/generate/app'
2
- require 'hanami/commands/new/abstract'
3
-
4
- module Hanami
5
- # @api private
6
- module Commands
7
- # @api private
8
- class New
9
- # @api private
10
- class Container < Abstract
11
-
12
- # @api private
13
- DEFAULT_APPLICATION_NAME = 'web'.freeze
14
-
15
- # @api private
16
- def map_templates
17
- add_application_templates
18
- add_empty_directories
19
- add_test_templates
20
- add_sql_templates
21
- add_git_templates
22
- end
23
-
24
- # @api private
25
- def template_options
26
- {
27
- project_name: project_name,
28
- project_module: project_module,
29
- hanami_head: hanami_head?,
30
- code_reloading: code_reloading?,
31
- test: test_framework.framework,
32
- database: database_config.type,
33
- database_config: database_config.to_hash,
34
- hanami_model_version: hanami_model_version,
35
- hanami_version: hanami_version,
36
- template: template_engine.name
37
- }
38
- end
39
-
40
- # @api private
41
- def post_process_templates
42
- init_git
43
- generate_app
44
- end
45
-
46
- private
47
-
48
- # @api private
49
- def add_application_templates
50
- add_mapping('hanamirc.tt', '.hanamirc')
51
- add_mapping('.env.development.tt', '.env.development')
52
- add_mapping('.env.test.tt', '.env.test')
53
- add_mapping('Gemfile.tt', 'Gemfile')
54
- add_mapping('config.ru.tt', 'config.ru')
55
- add_mapping('config/boot.rb.tt', 'config/boot.rb')
56
- add_mapping('config/environment.rb.tt', 'config/environment.rb')
57
- add_mapping('lib/project.rb.tt', "lib/#{ project_name }.rb")
58
- end
59
-
60
- # @api private
61
- def add_test_templates
62
- if test_framework.rspec?
63
- add_mapping('Rakefile.rspec.tt', 'Rakefile')
64
- add_mapping('rspec.rspec.tt', '.rspec')
65
- add_mapping('spec_helper.rb.rspec.tt', 'spec/spec_helper.rb')
66
- add_mapping('features_helper.rb.rspec.tt', 'spec/features_helper.rb')
67
- add_mapping('capybara.rb.rspec.tt', 'spec/support/capybara.rb')
68
- else # minitest (default)
69
- add_mapping('Rakefile.minitest.tt', 'Rakefile')
70
- add_mapping('spec_helper.rb.minitest.tt', 'spec/spec_helper.rb')
71
- add_mapping('features_helper.rb.minitest.tt', 'spec/features_helper.rb')
72
- end
73
- end
74
-
75
- # @api private
76
- def add_empty_directories
77
- add_mapping('.gitkeep', 'public/.gitkeep')
78
- add_mapping('.gitkeep', 'config/initializers/.gitkeep')
79
- add_mapping('.gitkeep', "lib/#{ project_name }/entities/.gitkeep")
80
- add_mapping('.gitkeep', "lib/#{ project_name }/repositories/.gitkeep")
81
- add_mapping('.gitkeep', "lib/#{ project_name }/mailers/.gitkeep")
82
- add_mapping('.gitkeep', "lib/#{ project_name }/mailers/templates/.gitkeep")
83
- add_mapping('.gitkeep', "spec/#{ project_name }/entities/.gitkeep")
84
- add_mapping('.gitkeep', "spec/#{ project_name }/repositories/.gitkeep")
85
- add_mapping('.gitkeep', "spec/#{ project_name }/mailers/.gitkeep")
86
- add_mapping('.gitkeep', 'spec/support/.gitkeep')
87
-
88
- if database_config.sql?
89
- add_mapping('.gitkeep', 'db/migrations/.gitkeep')
90
- else
91
- add_mapping('.gitkeep', 'db/.gitkeep')
92
- end
93
- end
94
-
95
- # @api private
96
- def generate_app
97
- Hanami::Commands::Generate::App.new(app_options, app_slice_name).start
98
- end
99
-
100
- # @api private
101
- def app_options
102
- {
103
- application_base_url: application_base_url
104
- }
105
- end
106
-
107
- # @api private
108
- def app_slice_name
109
- options.fetch(:application_name, DEFAULT_APPLICATION_NAME)
110
- end
111
-
112
- # @api private
113
- def template_source_path
114
- Pathname.new(::File.dirname(__FILE__)).join('..', '..', 'generators', 'application', 'container').realpath
115
- end
116
- end
117
- end
118
- end
119
- end