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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/FEATURES.md +12 -0
- data/README.md +3 -0
- data/bin/hanami +3 -3
- data/hanami.gemspec +9 -9
- data/lib/hanami.rb +27 -0
- data/lib/hanami/action/routing_helpers.rb +1 -1
- data/lib/hanami/application_configuration.rb +0 -8
- data/lib/hanami/application_name.rb +1 -3
- data/lib/hanami/application_namespace.rb +1 -1
- data/lib/hanami/cli/commands.rb +101 -0
- data/lib/hanami/cli/commands/assets.rb +16 -0
- data/lib/hanami/cli/commands/assets/precompile.rb +42 -0
- data/lib/hanami/cli/commands/command.rb +180 -0
- data/lib/hanami/cli/commands/console.rb +95 -0
- data/lib/hanami/cli/commands/db.rb +30 -0
- data/lib/hanami/cli/commands/db/apply.rb +32 -0
- data/lib/hanami/cli/commands/db/console.rb +44 -0
- data/lib/hanami/cli/commands/db/create.rb +32 -0
- data/lib/hanami/cli/commands/db/drop.rb +32 -0
- data/lib/hanami/cli/commands/db/migrate.rb +39 -0
- data/lib/hanami/cli/commands/db/prepare.rb +32 -0
- data/lib/hanami/cli/commands/db/version.rb +32 -0
- data/lib/hanami/cli/commands/destroy.rb +26 -0
- data/lib/hanami/cli/commands/destroy/action.rb +131 -0
- data/lib/hanami/cli/commands/destroy/app.rb +159 -0
- data/lib/hanami/cli/commands/destroy/mailer.rb +74 -0
- data/lib/hanami/cli/commands/destroy/migration.rb +51 -0
- data/lib/hanami/cli/commands/destroy/model.rb +84 -0
- data/lib/hanami/cli/commands/generate.rb +28 -0
- data/lib/hanami/cli/commands/generate/action.rb +224 -0
- data/lib/hanami/cli/commands/generate/action/action.erb +8 -0
- data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +11 -0
- data/lib/hanami/{generators/action/action_spec.rspec.tt → cli/commands/generate/action/action_spec.rspec.erb} +1 -3
- data/lib/hanami/cli/commands/generate/action/action_without_view.erb +9 -0
- data/lib/hanami/cli/commands/generate/action/view.erb +5 -0
- data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +15 -0
- data/lib/hanami/{generators/action/view_spec.rspec.tt → cli/commands/generate/action/view_spec.rspec.erb} +2 -4
- data/lib/hanami/cli/commands/generate/app.rb +231 -0
- data/lib/hanami/{generators/app/application.rb.tt → cli/commands/generate/app/application.erb} +6 -6
- data/lib/hanami/{generators → cli/commands/generate}/app/favicon.ico +0 -0
- data/lib/hanami/{generators/action/template.tt → cli/commands/generate/app/gitkeep.erb} +0 -0
- data/lib/hanami/cli/commands/generate/app/layout.erb +7 -0
- data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +11 -0
- data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +11 -0
- data/lib/hanami/{generators/app/config/routes.rb.tt → cli/commands/generate/app/routes.erb} +0 -0
- data/lib/hanami/{generators/app/templates/application.html.erb.tt → cli/commands/generate/app/template.erb.erb} +1 -1
- data/lib/hanami/{generators/app/templates/application.html.haml.tt → cli/commands/generate/app/template.haml.erb} +1 -1
- data/lib/hanami/{generators/app/templates/application.html.slim.tt → cli/commands/generate/app/template.slim.erb} +1 -1
- data/lib/hanami/cli/commands/generate/mailer.rb +94 -0
- data/lib/hanami/cli/commands/generate/mailer/mailer.erb +7 -0
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +7 -0
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +5 -0
- data/lib/hanami/cli/commands/generate/migration.rb +41 -0
- data/lib/hanami/{generators/migration/migration.rb.tt → cli/commands/generate/migration/migration.erb} +0 -0
- data/lib/hanami/cli/commands/generate/model.rb +98 -0
- data/lib/hanami/cli/commands/generate/model/entity.erb +2 -0
- data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +5 -0
- data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +3 -0
- data/lib/hanami/{generators/model/migration.rb.tt → cli/commands/generate/model/migration.erb} +1 -1
- data/lib/hanami/cli/commands/generate/model/repository.erb +2 -0
- data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +5 -0
- data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +3 -0
- data/lib/hanami/cli/commands/generate/secret.rb +48 -0
- data/lib/hanami/cli/commands/new.rb +575 -0
- data/lib/hanami/{generators/application/container/.env.development.tt → cli/commands/new/.env.development.erb} +1 -1
- data/lib/hanami/{generators/application/container/.env.test.tt → cli/commands/new/.env.test.erb} +1 -1
- data/lib/hanami/{generators/app/config/initializers/.gitkeep → cli/commands/new/.gitkeep.erb} +0 -0
- data/lib/hanami/cli/commands/new/Gemfile.erb +57 -0
- data/lib/hanami/cli/commands/new/README.md.erb +35 -0
- data/lib/hanami/{generators/application/container/config.ru.tt → cli/commands/new/config.ru.erb} +0 -0
- data/lib/hanami/{generators/application/container/config/boot.rb.tt → cli/commands/new/config/boot.erb} +0 -0
- data/lib/hanami/{generators/application/container/config/environment.rb.tt → cli/commands/new/config/environment.erb} +8 -8
- data/lib/hanami/{generators/application/container/gitignore.tt → cli/commands/new/gitignore.erb} +0 -0
- data/lib/hanami/{generators/application/container/gitignore_with_sqlite.tt → cli/commands/new/gitignore_with_sqlite.erb} +0 -0
- data/lib/hanami/cli/commands/new/hanamirc.erb +3 -0
- data/lib/hanami/cli/commands/new/lib/project.erb +2 -0
- data/lib/hanami/{generators/application/container/Rakefile.minitest.tt → cli/commands/new/minitest/Rakefile.erb} +0 -0
- data/lib/hanami/{generators/application/container/features_helper.rb.minitest.tt → cli/commands/new/minitest/features_helper.erb} +0 -0
- data/lib/hanami/{generators/application/container/spec_helper.rb.minitest.tt → cli/commands/new/minitest/spec_helper.erb} +0 -0
- data/lib/hanami/{generators/application/container/Rakefile.rspec.tt → cli/commands/new/rspec/Rakefile.erb} +0 -0
- data/lib/hanami/{generators/application/container/capybara.rb.rspec.tt → cli/commands/new/rspec/capybara.erb} +0 -0
- data/lib/hanami/{generators/application/container/features_helper.rb.rspec.tt → cli/commands/new/rspec/features_helper.erb} +0 -0
- data/lib/hanami/{generators/application/container/rspec.rspec.tt → cli/commands/new/rspec/rspec.erb} +0 -0
- data/lib/hanami/{generators/application/container/spec_helper.rb.rspec.tt → cli/commands/new/rspec/spec_helper.erb} +0 -0
- data/lib/hanami/{generators/application/container/.gitignore → cli/commands/new/schema.sql.erb} +0 -0
- data/lib/hanami/cli/commands/project.rb +421 -0
- data/lib/hanami/cli/commands/routes.rb +21 -0
- data/lib/hanami/cli/commands/server.rb +39 -0
- data/lib/hanami/cli/commands/templates.rb +31 -0
- data/lib/hanami/cli/commands/version.rb +19 -0
- data/lib/hanami/common_logger.rb +14 -4
- data/lib/hanami/components.rb +39 -1
- data/lib/hanami/components/components.rb +36 -1
- data/lib/hanami/config/sessions.rb +1 -1
- data/lib/hanami/environment.rb +20 -50
- data/lib/hanami/hanamirc.rb +7 -30
- data/lib/hanami/middleware.rb +0 -26
- data/lib/hanami/static.rb +1 -1
- data/lib/hanami/templates/welcome.html.erb +1 -1
- data/lib/hanami/version.rb +1 -1
- data/lib/hanami/welcome.rb +1 -11
- metadata +125 -135
- data/lib/hanami/cli.rb +0 -154
- data/lib/hanami/cli_base.rb +0 -49
- data/lib/hanami/cli_sub_commands/assets.rb +0 -24
- data/lib/hanami/cli_sub_commands/db.rb +0 -138
- data/lib/hanami/cli_sub_commands/destroy.rb +0 -115
- data/lib/hanami/cli_sub_commands/generate.rb +0 -150
- data/lib/hanami/commands/apps.rb +0 -4
- data/lib/hanami/commands/assets/precompile.rb +0 -26
- data/lib/hanami/commands/command.rb +0 -77
- data/lib/hanami/commands/console.rb +0 -107
- data/lib/hanami/commands/db/apply.rb +0 -19
- data/lib/hanami/commands/db/console.rb +0 -41
- data/lib/hanami/commands/db/create.rb +0 -19
- data/lib/hanami/commands/db/drop.rb +0 -19
- data/lib/hanami/commands/db/migrate.rb +0 -30
- data/lib/hanami/commands/db/prepare.rb +0 -19
- data/lib/hanami/commands/db/version.rb +0 -19
- data/lib/hanami/commands/generate/abstract.rb +0 -76
- data/lib/hanami/commands/generate/action.rb +0 -322
- data/lib/hanami/commands/generate/app.rb +0 -154
- data/lib/hanami/commands/generate/mailer.rb +0 -131
- data/lib/hanami/commands/generate/migration.rb +0 -75
- data/lib/hanami/commands/generate/model.rb +0 -132
- data/lib/hanami/commands/generate/secret_token.rb +0 -37
- data/lib/hanami/commands/new/abstract.rb +0 -178
- data/lib/hanami/commands/new/app.rb +0 -129
- data/lib/hanami/commands/new/container.rb +0 -119
- data/lib/hanami/commands/routes.rb +0 -26
- data/lib/hanami/commands/server.rb +0 -32
- data/lib/hanami/generators/action/action.rb.tt +0 -8
- data/lib/hanami/generators/action/action_spec.minitest.tt +0 -12
- data/lib/hanami/generators/action/action_without_view.rb.tt +0 -9
- data/lib/hanami/generators/action/view.rb.tt +0 -5
- data/lib/hanami/generators/action/view_spec.minitest.tt +0 -16
- data/lib/hanami/generators/app/.gitkeep.tt +0 -1
- data/lib/hanami/generators/app/views/application_layout.rb.tt +0 -7
- data/lib/hanami/generators/application/container/.gitkeep +0 -1
- data/lib/hanami/generators/application/container/Gemfile.tt +0 -56
- data/lib/hanami/generators/application/container/config/initializers/.gitkeep +0 -0
- data/lib/hanami/generators/application/container/db/.gitkeep +0 -1
- data/lib/hanami/generators/application/container/hanamirc.tt +0 -4
- data/lib/hanami/generators/application/container/lib/chirp/entities/.gitkeep +0 -1
- data/lib/hanami/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
- data/lib/hanami/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
- data/lib/hanami/generators/application/container/lib/chirp/repositories/.gitkeep +0 -1
- data/lib/hanami/generators/application/container/lib/project.rb.tt +0 -2
- data/lib/hanami/generators/application/container/schema.sql.tt +0 -0
- data/lib/hanami/generators/database_config.rb +0 -114
- data/lib/hanami/generators/generatable.rb +0 -69
- data/lib/hanami/generators/generator.rb +0 -52
- data/lib/hanami/generators/mailer/mailer.rb.tt +0 -7
- data/lib/hanami/generators/mailer/mailer_spec.rb.minitest.tt +0 -7
- data/lib/hanami/generators/mailer/mailer_spec.rb.rspec.tt +0 -5
- data/lib/hanami/generators/mailer/template.html.tt +0 -0
- data/lib/hanami/generators/mailer/template.txt.tt +0 -0
- data/lib/hanami/generators/model/entity.rb.tt +0 -2
- data/lib/hanami/generators/model/entity_spec.minitest.tt +0 -5
- data/lib/hanami/generators/model/entity_spec.rspec.tt +0 -3
- data/lib/hanami/generators/model/repository.rb.tt +0 -2
- data/lib/hanami/generators/model/repository_spec.minitest.tt +0 -5
- data/lib/hanami/generators/model/repository_spec.rspec.tt +0 -3
- data/lib/hanami/generators/template_engine.rb +0 -44
- data/lib/hanami/generators/test_framework.rb +0 -55
data/lib/hanami/cli.rb
DELETED
@@ -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
|
data/lib/hanami/cli_base.rb
DELETED
@@ -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
|