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,154 +0,0 @@
1
- require 'thor'
2
- require 'hanami/cli_base'
3
- require 'hanami/commands/console'
4
- require 'hanami/commands/new/app'
5
- require 'hanami/commands/new/container'
6
-
7
- module Hanami
8
- # @api private
9
- class Cli < Thor
10
- # include Thor::Actions
11
- extend CliBase
12
-
13
- desc 'version', 'Prints hanami version'
14
- long_desc <<-EOS
15
- `hanami version` prints the version of the bundled hanami gem.
16
- EOS
17
- # @api private
18
- def version
19
- require 'hanami/version'
20
- puts "v#{ Hanami::VERSION }"
21
- end
22
- map %w{--version -v} => :version
23
-
24
- desc 'server', 'Starts a hanami server'
25
- long_desc <<-EOS
26
- `hanami server` starts a server for the current hanami project.
27
-
28
- $ > hanami server
29
-
30
- $ > hanami server -p 4500
31
- EOS
32
- method_option :port, aliases: '-p', desc: 'The port to run the server on'
33
- method_option :server, desc: 'Choose a specific Rack::Handler (webrick, thin, etc)'
34
- method_option :rackup, desc: 'A rackup configuration file path to load (config.ru)'
35
- method_option :host, desc: 'The host address to bind to'
36
- method_option :debug, desc: 'Turn on debug output'
37
- method_option :warn, desc: 'Turn on warnings'
38
- method_option :daemonize, desc: 'If true, the server will daemonize itself (fork, detach, etc)'
39
- method_option :pid, desc: 'Path to write a pid file after daemonize'
40
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
41
- method_option :code_reloading, desc: 'Code reloading', type: :boolean, default: true
42
- method_option :help, desc: 'Displays the usage message'
43
- # @api private
44
- def server
45
- if options[:help]
46
- invoke :help, ['server']
47
- else
48
- require 'hanami/commands/server'
49
- Hanami::Commands::Server.new(options).start
50
- end
51
- end
52
-
53
- desc 'rackserver', '[private]'
54
- method_option :port, aliases: '-p', desc: 'The port to run the server on, '
55
- method_option :server, desc: 'choose a specific Rack::Handler, e.g. webrick, thin etc'
56
- method_option :rackup, desc: 'a rackup configuration file path to load (config.ru)'
57
- method_option :host, desc: 'the host address to bind to'
58
- method_option :debug, desc: 'turn on debug output'
59
- method_option :warn, desc: 'turn on warnings'
60
- method_option :daemonize, desc: 'if true, the server will daemonize itself (fork, detach, etc)'
61
- method_option :pid, desc: 'path to write a pid file after daemonize'
62
- method_option :environment, desc: 'path to environment configuration (config/environment.rb)'
63
- method_option :help, desc: 'displays the usage message'
64
- # @api private
65
- def rackserver
66
- if options[:help]
67
- invoke :help, ['rackserver']
68
- else
69
- require 'hanami/server'
70
- Hanami::Server.new(options).start
71
- end
72
- end
73
-
74
-
75
- desc 'console', 'Starts a hanami console'
76
- long_desc <<-EOS
77
- `hanami console` starts the interactive hanami console.
78
-
79
- $ > hanami console --engine=pry
80
- EOS
81
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
82
- method_option :engine, desc: "Choose a specific console engine: (#{Hanami::Commands::Console::ENGINES.keys.join('/')})"
83
- method_option :help, desc: 'Displays the usage method'
84
- # @api private
85
- def console
86
- if options[:help]
87
- invoke :help, ['console']
88
- else
89
- Hanami::Commands::Console.new(options).start
90
- end
91
- end
92
-
93
- desc 'new PROJECT_NAME', 'Generate a new hanami project'
94
- long_desc <<-EOS
95
- `hanami new` creates a new hanami project.
96
- You can specify various options such as the database to be used as well as the path and architecture.
97
-
98
- $ > hanami new fancy_app --application_name=admin
99
-
100
- $ > hanami new fancy_app --arch=app
101
-
102
- $ > hanami new fancy_app --hanami-head=true
103
- EOS
104
- method_option :database, aliases: ['-d', '--db'], desc: "Application database (#{Hanami::Generators::DatabaseConfig::SUPPORTED_ENGINES.keys.join('/')})", default: Hanami::Generators::DatabaseConfig::DEFAULT_ENGINE
105
- method_option :architecture, aliases: ['-a', '--arch'], desc: 'Project architecture (container/app)', default: Hanami::Commands::New::Abstract::DEFAULT_ARCHITECTURE
106
- method_option :application_name, desc: 'Application name, only for container', default: Hanami::Commands::New::Container::DEFAULT_APPLICATION_NAME
107
- method_option :application_base_url, desc: 'Application base url', default: Hanami::Commands::New::Abstract::DEFAULT_APPLICATION_BASE_URL
108
- method_option :template, desc: "Template engine (#{Hanami::Generators::TemplateEngine::SUPPORTED_ENGINES.join('/')})", default: Hanami::Generators::TemplateEngine::DEFAULT_ENGINE
109
- method_option :test, desc: "Project test framework (#{Hanami::Generators::TestFramework::VALID_FRAMEWORKS.join('/')})", default: Hanami::Hanamirc::DEFAULT_TEST_SUITE
110
- method_option :hanami_head, desc: 'Use hanami HEAD (true/false)', type: :boolean, default: false
111
- method_option :help, desc: 'Displays the usage method'
112
- # @api private
113
- def new(application_name=nil)
114
- if options[:help]
115
- invoke :help, ['new']
116
- elsif application_name.nil?
117
- warn %(`hanami new` was called with no arguments\nUsage: `hanami new PROJECT_NAME`)
118
- exit(1)
119
- elsif options[:architecture] == 'app'
120
- Hanami::Commands::New::App.new(options, application_name).start
121
- else
122
- Hanami::Commands::New::Container.new(options, application_name).start
123
- end
124
- end
125
-
126
- desc 'routes', 'Prints the routes'
127
- long_desc <<-EOS
128
- `hanami routes` outputs all the registered routes to the console.
129
- EOS
130
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
131
- method_option :help, desc: 'Displays the usage method'
132
- # @api private
133
- def routes
134
- if options[:help]
135
- invoke :help, ['routes']
136
- else
137
- require 'hanami/commands/routes'
138
- Hanami::Commands::Routes.new(options).start
139
- end
140
- end
141
-
142
- require 'hanami/cli_sub_commands/db'
143
- register Hanami::CliSubCommands::DB, 'db', 'db [SUBCOMMAND]', 'Manage set of DB operations'
144
-
145
- require 'hanami/cli_sub_commands/generate'
146
- register Hanami::CliSubCommands::Generate, 'generate', 'generate [SUBCOMMAND]', 'Generate hanami classes'
147
-
148
- require 'hanami/cli_sub_commands/destroy'
149
- register Hanami::CliSubCommands::Destroy, 'destroy', 'destroy [SUBCOMMAND]', 'Destroy hanami classes'
150
-
151
- require 'hanami/cli_sub_commands/assets'
152
- register Hanami::CliSubCommands::Assets, 'assets', 'assets [SUBCOMMAND]', 'Manage assets'
153
- end
154
- end
@@ -1,49 +0,0 @@
1
- module Hanami
2
- # @api private
3
- module CliBase
4
- # Add new custom CLI command to special CLI class.
5
- # Please be careful. This is a private method that
6
- # can be deleted soon.
7
- #
8
- # @since 0.8.0
9
- # @api private
10
- #
11
- # @example Usage with Cli class
12
- # require 'hanami'
13
- # require 'hanami/cli'
14
- #
15
- # Hanami::Cli.define_commands do
16
- # desc 'custom', 'Generate a something'
17
- # long_desc <<-EOS
18
- # long description for your custom command
19
- # EOS
20
- # def custom
21
- # if options[:help]
22
- # invoke :help, ['auth']
23
- # else
24
- # # ...
25
- # end
26
- # end
27
- # end
28
- def define_commands(&blk)
29
- class_eval(&blk) if block_given?
30
- end
31
-
32
- # @api private
33
- def banner(command, nspace = true, subcommand = false)
34
- super(command, nspace, namespace != 'hanami:cli')
35
- end
36
-
37
- # @api private
38
- def handle_argument_error(command, error, args, arity)
39
- name = [(namespace == 'hanami:cli' ? nil : namespace), command.name].compact.join(" ")
40
-
41
- msg = "ERROR: \"#{basename} #{name}\" was called with "
42
- msg << "no arguments" if args.empty?
43
- msg << "arguments " << args.inspect unless args.empty?
44
- msg << "\nUsage: #{banner(command).inspect}"
45
-
46
- raise Thor::InvocationError, msg
47
- end
48
- end
49
- end
@@ -1,24 +0,0 @@
1
- module Hanami
2
- class CliSubCommands
3
- # A set of subcommands related to assets
4
- #
5
- # It is run with:
6
- #
7
- # `bundle exec hanami assets`
8
- #
9
- # @since 0.6.0
10
- # @api private
11
- class Assets < Thor
12
- extend CliBase
13
- namespace :assets
14
-
15
- desc 'precompile', 'Precompile assets for deployment'
16
- # @since 0.6.0
17
- # @api private
18
- def precompile
19
- require 'hanami/commands/assets/precompile'
20
- Hanami::Commands::Assets::Precompile.new(options).start
21
- end
22
- end
23
- end
24
- end
@@ -1,138 +0,0 @@
1
- module Hanami
2
- # @api private
3
- class CliSubCommands
4
- # A set of subcommands related to DB
5
- #
6
- # It is run with:
7
- #
8
- # `bundle exec hanami db`
9
- #
10
- # @since 0.6.0
11
- # @api private
12
- class DB < Thor
13
- extend CliBase
14
- namespace :db
15
-
16
- desc 'console', 'Start DB console'
17
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
18
- # @since 0.6.0
19
- # @api private
20
- def console(name = nil)
21
- if options[:help]
22
- invoke :help, ['console']
23
- else
24
- require 'hanami/commands/db/console'
25
- Hanami::Commands::DB::Console.new(options, name).start
26
- end
27
- end
28
-
29
- desc 'create', 'Create database for current environment'
30
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
31
- # @since 0.6.0
32
- # @api private
33
- def create
34
- if options[:help]
35
- invoke :help, ['create']
36
- else
37
- assert_allowed_environment!
38
- require 'hanami/commands/db/create'
39
- Hanami::Commands::DB::Create.new(options).start
40
- end
41
- end
42
-
43
- desc 'drop', 'Drop database for current environment'
44
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
45
- # @since 0.6.0
46
- # @api private
47
- def drop
48
- if options[:help]
49
- invoke :help, ['drop']
50
- else
51
- assert_allowed_environment!
52
- require 'hanami/commands/db/drop'
53
- Hanami::Commands::DB::Drop.new(options).start
54
- end
55
- end
56
-
57
- desc 'migrate', 'Migrate database for current environment'
58
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
59
- # @since 0.6.0
60
- # @api private
61
- def migrate(version = nil)
62
- if options[:help]
63
- invoke :help, ['migrate']
64
- else
65
- require 'hanami/commands/db/migrate'
66
- Hanami::Commands::DB::Migrate.new(options, version).start
67
- end
68
- end
69
-
70
- desc 'apply', 'Migrate, dump schema, delete migrations (experimental)'
71
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
72
- # @since 0.6.0
73
- # @api private
74
- def apply
75
- if options[:help]
76
- invoke :help, ['apply']
77
- else
78
- assert_development_environment!
79
- require 'hanami/commands/db/apply'
80
- Hanami::Commands::DB::Apply.new(options).start
81
- end
82
- end
83
-
84
- desc 'prepare', 'Create and migrate database'
85
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
86
- # @since 0.6.0
87
- # @api private
88
- def prepare
89
- if options[:help]
90
- invoke :help, ['prepare']
91
- else
92
- assert_allowed_environment!
93
- require 'hanami/commands/db/prepare'
94
- Hanami::Commands::DB::Prepare.new(options).start
95
- end
96
- end
97
-
98
- desc 'version', 'Current database version'
99
- method_option :environment, desc: 'Path to environment configuration (config/environment.rb)'
100
- # @since 0.6.0
101
- # @api private
102
- def version
103
- if options[:help]
104
- invoke :help, ['version']
105
- else
106
- require 'hanami/commands/db/version'
107
- Hanami::Commands::DB::Version.new(options).start
108
- end
109
- end
110
-
111
- private
112
-
113
- # @since 0.6.0
114
- # @api private
115
- def environment
116
- Hanami::Environment.new(options)
117
- end
118
-
119
- # @since 0.6.0
120
- # @api private
121
- def assert_allowed_environment!
122
- if environment.environment?(:production)
123
- puts "Can't run this command in production mode"
124
- exit 1
125
- end
126
- end
127
-
128
- # @since 0.6.0
129
- # @api private
130
- def assert_development_environment!
131
- unless environment.environment?(:development)
132
- puts "This command can be ran only in development mode"
133
- exit 1
134
- end
135
- end
136
- end
137
- end
138
- end
@@ -1,115 +0,0 @@
1
- require 'hanami/routing/route'
2
- require 'hanami/commands/generate/action'
3
-
4
- module Hanami
5
- class CliSubCommands
6
- # @api private
7
- class Destroy < Thor
8
- extend CliBase
9
- include Thor::Actions
10
- namespace :destroy
11
-
12
- desc 'action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME', 'Destroy a hanami action'
13
- long_desc <<-EOS
14
- `hanami destroy action` will destroy an an action, view and template along with specs and a route.
15
-
16
- For Application architecture the application name is 'app'. For Container architecture the default application is called 'web'.
17
-
18
- > $ hanami destroy action app cars#index
19
-
20
- > $ hanami destroy action other-app cars#index
21
-
22
- > $ hanami destroy action web cars#create --method=post
23
- EOS
24
-
25
- method_option :method, desc: "The HTTP method used when the route was generated. Must be one of (#{Hanami::Routing::Route::VALID_HTTP_VERBS.join('/')})", default: Hanami::Commands::Generate::Action::DEFAULT_HTTP_METHOD
26
- method_option :url, desc: 'Relative URL for action, will be used for the route', default: nil
27
- method_option :template, desc: 'Extension used when the template was generated. Default is defined through your .hanamirc file.'
28
-
29
- # @api private
30
- def actions(application_name = nil, controller_and_action_name)
31
- if Hanami::Environment.new(options).container? && application_name.nil?
32
- msg = "ERROR: \"hanami destroy action\" was called with arguments [\"#{controller_and_action_name}\"]\n" \
33
- "Usage: \"hanami destroy action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
34
- fail Error, msg
35
- end
36
-
37
- if options[:help]
38
- invoke :help, ['action']
39
- else
40
- Hanami::Commands::Generate::Action.new(options, application_name, controller_and_action_name).destroy.start
41
- end
42
- end
43
-
44
- desc 'migration NAME', 'Destroy a migration'
45
- long_desc <<-EOS
46
- `hanami destroy migration` will destroy a migration file.
47
-
48
- > $ hanami destroy migration create_books
49
- EOS
50
-
51
- # @api private
52
- def migration(name)
53
- if options[:help]
54
- invoke :help, ['migration']
55
- else
56
- require 'hanami/commands/generate/migration'
57
- Hanami::Commands::Generate::Migration.new(options, name).destroy.start
58
- end
59
- end
60
-
61
- desc 'model NAME', 'Destroy an entity'
62
- long_desc <<-EOS
63
- `hanami destroy model` will destroy an entity along with repository
64
- and corresponding tests
65
-
66
- > $ hanami destroy model car
67
- EOS
68
-
69
- # @api private
70
- def model(name)
71
- if options[:help]
72
- invoke :help, ['model']
73
- else
74
- require 'hanami/commands/generate/model'
75
- Hanami::Commands::Generate::Model.new(options, name).destroy.start
76
- end
77
- end
78
-
79
- desc 'application NAME', 'Destroy an application'
80
- long_desc <<-EOS
81
- `hanami destroy application` will destroy an application, along with templates and specs.
82
-
83
- > $ hanami destroy application api
84
- EOS
85
- # @api private
86
- def application(name)
87
- if options[:help]
88
- invoke :help, ['app']
89
- else
90
- require 'hanami/commands/generate/app'
91
- Hanami::Commands::Generate::App.new(options, name).destroy.start
92
- end
93
- end
94
-
95
- desc 'mailer NAME', 'Destroy a mailer'
96
- long_desc <<-EOS
97
- `hanami destroy mailer` will destroy a mailer, along with templates and specs.
98
-
99
- > $ hanami destroy mailer forgot_password
100
- EOS
101
-
102
- # @api private
103
- def mailer(name)
104
- if options[:help]
105
- invoke :help, ['mailer']
106
- else
107
- require 'hanami/commands/generate/mailer'
108
-
109
- options[:behavior] = :revoke
110
- Hanami::Commands::Generate::Mailer.new(options, name).destroy.start
111
- end
112
- end
113
- end
114
- end
115
- end