hanami-cli 2.0.0.rc1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.yardopts +3 -0
  4. data/CHANGELOG.md +12 -0
  5. data/Gemfile +3 -4
  6. data/exe/hanami +6 -1
  7. data/hanami-cli.gemspec +3 -2
  8. data/lib/hanami/cli/bundler.rb +95 -5
  9. data/lib/hanami/cli/command.rb +41 -0
  10. data/lib/hanami/cli/commands/app/command.rb +63 -2
  11. data/lib/hanami/cli/commands/app/console.rb +7 -3
  12. data/lib/hanami/cli/commands/app/db/create.rb +2 -0
  13. data/lib/hanami/cli/commands/app/db/create_migration.rb +3 -0
  14. data/lib/hanami/cli/commands/app/db/drop.rb +2 -0
  15. data/lib/hanami/cli/commands/app/db/migrate.rb +2 -0
  16. data/lib/hanami/cli/commands/app/db/reset.rb +2 -0
  17. data/lib/hanami/cli/commands/app/db/rollback.rb +2 -0
  18. data/lib/hanami/cli/commands/app/db/sample_data.rb +2 -0
  19. data/lib/hanami/cli/commands/app/db/seed.rb +2 -0
  20. data/lib/hanami/cli/commands/app/db/setup.rb +2 -0
  21. data/lib/hanami/cli/commands/app/db/structure/dump.rb +3 -0
  22. data/lib/hanami/cli/commands/app/db/utils/database.rb +155 -0
  23. data/lib/hanami/cli/commands/app/db/utils/database_config.rb +60 -0
  24. data/lib/hanami/cli/commands/app/db/utils/mysql.rb +33 -0
  25. data/lib/hanami/cli/commands/app/db/utils/postgres.rb +64 -0
  26. data/lib/hanami/cli/commands/app/db/utils/sqlite.rb +45 -0
  27. data/lib/hanami/cli/commands/app/db/version.rb +2 -0
  28. data/lib/hanami/cli/commands/app/generate/action.rb +10 -3
  29. data/lib/hanami/cli/commands/app/generate/slice.rb +9 -6
  30. data/lib/hanami/cli/commands/app/generate.rb +2 -0
  31. data/lib/hanami/cli/commands/app/install.rb +13 -2
  32. data/lib/hanami/cli/commands/app/middleware.rb +7 -1
  33. data/lib/hanami/cli/commands/app/routes.rb +8 -0
  34. data/lib/hanami/cli/commands/app/server.rb +10 -0
  35. data/lib/hanami/cli/commands/app/version.rb +4 -2
  36. data/lib/hanami/cli/commands/app.rb +6 -19
  37. data/lib/hanami/cli/commands/gem/new.rb +12 -13
  38. data/lib/hanami/cli/commands/gem/version.rb +4 -2
  39. data/lib/hanami/cli/commands/gem.rb +8 -5
  40. data/lib/hanami/cli/commands.rb +19 -3
  41. data/lib/hanami/cli/errors.rb +65 -0
  42. data/lib/hanami/cli/files.rb +10 -0
  43. data/lib/hanami/cli/generators/app/action.rb +11 -5
  44. data/lib/hanami/cli/generators/app/action_context.rb +22 -0
  45. data/lib/hanami/cli/generators/app/slice.rb +6 -1
  46. data/lib/hanami/cli/generators/app/slice_context.rb +8 -0
  47. data/lib/hanami/cli/generators/context.rb +14 -0
  48. data/lib/hanami/cli/generators/gem/app.rb +9 -5
  49. data/lib/hanami/cli/generators/version.rb +8 -6
  50. data/lib/hanami/cli/middleware_stack_inspector.rb +5 -0
  51. data/lib/hanami/cli/rake_tasks.rb +0 -1
  52. data/lib/hanami/cli/repl/core.rb +12 -4
  53. data/lib/hanami/cli/repl/irb.rb +3 -2
  54. data/lib/hanami/cli/repl/pry.rb +1 -3
  55. data/lib/hanami/cli/server.rb +11 -0
  56. data/lib/hanami/cli/system_call.rb +65 -7
  57. data/lib/hanami/cli/url.rb +9 -2
  58. data/lib/hanami/cli/version.rb +4 -1
  59. data/lib/hanami/cli.rb +26 -3
  60. data/lib/hanami/console/context.rb +4 -2
  61. data/lib/hanami/console/plugins/slice_readers.rb +1 -0
  62. data/lib/hanami-cli.rb +3 -0
  63. metadata +46 -25
  64. data/lib/hanami/cli/command_line.rb +0 -17
  65. data/lib/hanami/cli/commands/db/utils/database.rb +0 -133
  66. data/lib/hanami/cli/commands/db/utils/database_config.rb +0 -48
  67. data/lib/hanami/cli/commands/db/utils/mysql.rb +0 -27
  68. data/lib/hanami/cli/commands/db/utils/postgres.rb +0 -54
  69. data/lib/hanami/cli/commands/db/utils/sqlite.rb +0 -37
  70. data/lib/hanami/cli/error.rb +0 -8
@@ -2,25 +2,36 @@
2
2
 
3
3
  module Hanami
4
4
  module CLI
5
+ # @since 2.0.0
5
6
  # @api private
6
7
  class Server
8
+ # @since 2.0.0
9
+ # @api private
7
10
  attr_reader :rack_server
8
11
 
12
+ # @since 2.0.0
13
+ # @api private
9
14
  RACK_FALLBACK_OPTIONS = {
10
15
  host: :Host,
11
16
  port: :Port
12
17
  }.freeze
13
18
 
19
+ # @since 2.0.0
20
+ # @api private
14
21
  OVERRIDING_OPTIONS = {
15
22
  config: :config,
16
23
  debug: :debug,
17
24
  warn: :warn
18
25
  }.freeze
19
26
 
27
+ # @since 2.0.0
28
+ # @api private
20
29
  def initialize(rack_server: Rack::Server)
21
30
  @rack_server = rack_server
22
31
  end
23
32
 
33
+ # @since 2.0.0
34
+ # @api private
24
35
  def call(**options)
25
36
  rack_server.start(Hash[
26
37
  extract_rack_fallback_options(options) + extract_overriding_options(options)
@@ -1,33 +1,90 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # SystemCall#call is adapted from hanami-devtools as well as the Bundler source code. Bundler is
4
+ # released under the MIT license: https://github.com/bundler/bundler/blob/master/LICENSE.md.
5
+ #
6
+ # Thank you to the Bundler maintainers and contributors.
7
+
3
8
  module Hanami
4
9
  module CLI
10
+ # Facility for making convenient system calls and returning their results.
11
+ #
12
+ # @since 2.0.0
13
+ # @api public
5
14
  class SystemCall
15
+ # The result of a system call. Provides access to its standard out and error streams, plus
16
+ # whether the command executed successfully.
17
+ #
18
+ # @since 2.0.0
19
+ # @api public
6
20
  class Result
7
21
  SUCCESSFUL_EXIT_CODE = 0
8
22
  private_constant :SUCCESSFUL_EXIT_CODE
9
23
 
10
- attr_reader :exit_code, :out, :err
24
+ # Returns the command's exit code
25
+ #
26
+ # @return [Integer]
27
+ #
28
+ # @since 2.0.0
29
+ # @api public
30
+ attr_reader :exit_code
31
+
32
+ # Returns the command's standard output stream
33
+ #
34
+ # @return [IO]
35
+ #
36
+ # @since 2.0.0
37
+ # @api public
38
+ attr_reader :out
39
+
40
+ # Returns the command's error ouptut stream
41
+ #
42
+ # @return [IO]
43
+ #
44
+ # @since 2.0.0
45
+ # @api public
46
+ attr_reader :err
11
47
 
48
+ # @since 2.0.0
49
+ # @api private
12
50
  def initialize(exit_code:, out:, err:)
13
51
  @exit_code = exit_code
14
52
  @out = out
15
53
  @err = err
16
54
  end
17
55
 
56
+ # Returns true if the command executed successfully (if its {#exit_code} is 0).
57
+ #
58
+ # @return [Boolean]
59
+ #
60
+ # @since 2.0.0
61
+ # @api public
18
62
  def successful?
19
63
  exit_code == SUCCESSFUL_EXIT_CODE
20
64
  end
21
65
  end
22
66
 
23
- # Adapted from Bundler source code
67
+ # Executes the given system command and returns the result.
24
68
  #
25
- # Bundler is released under MIT license
26
- # https://github.com/bundler/bundler/blob/master/LICENSE.md
69
+ # @param cmd [String] the system command to execute
70
+ # @param env [Hash<String, String>] an optional hash of environment variables to set before
71
+ # executing the command
27
72
  #
28
- # A special "thank you" goes to Bundler maintainers and contributors.
73
+ # @overload call(cmd, env: {})
29
74
  #
30
- # Also adapted from `hanami-devtools` source code
75
+ # @overload call(cmd, env: {}, &blk)
76
+ # Executes the command and passes the given block to the `Open3.popen3` method called
77
+ # internally.
78
+ #
79
+ # @example
80
+ # call("info") do |stdin, stdout, stderr, wait_thread|
81
+ # # ...
82
+ # end
83
+ #
84
+ # @return [Result]
85
+ #
86
+ # @since 2.0.0
87
+ # @api public
31
88
  def call(cmd, env: {})
32
89
  exitstatus = nil
33
90
  out = nil
@@ -35,7 +92,8 @@ module Hanami
35
92
 
36
93
  ::Bundler.with_unbundled_env do
37
94
  Open3.popen3(env, cmd) do |stdin, stdout, stderr, wait_thr|
38
- yield stdin, stdout, wait_thr if block_given?
95
+ yield stdin, stdout, stderr, wait_thr if block_given?
96
+
39
97
  stdin.close
40
98
 
41
99
  exitstatus = wait_thr&.value&.exitstatus
@@ -1,28 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "uri"
4
+ require_relative "./errors"
4
5
 
5
6
  module Hanami
6
7
  module CLI
8
+ # @since 2.0.0
9
+ # @api private
7
10
  module URL
8
11
  DEFAULT_URL_PREFIX = "/"
9
12
  private_constant :DEFAULT_URL_PREFIX
10
13
 
11
14
  class << self
15
+ # @since 2.0.0
16
+ # @api private
12
17
  def call(url)
13
18
  result = url
14
19
  result = URI.parse(result).path
15
20
 
16
21
  unless valid?(result)
17
- raise ArgumentError.new("invalid URL: `#{url}'")
22
+ raise InvalidURLError.new(url)
18
23
  end
19
24
 
20
25
  result
21
26
  rescue URI::InvalidURIError
22
- raise ArgumentError.new("invalid URL: `#{url}'")
27
+ raise InvalidURLError.new(url)
23
28
  end
24
29
  alias_method :[], :call
25
30
 
31
+ # @since 2.0.0
32
+ # @api private
26
33
  def valid?(url)
27
34
  return false if url.nil?
28
35
 
@@ -2,7 +2,10 @@
2
2
 
3
3
  module Hanami
4
4
  module CLI
5
+ # The current hanami-cli version.
6
+ #
5
7
  # @api public
6
- VERSION = "2.0.0.rc1"
8
+ # @since 2.0.0
9
+ VERSION = "2.0.0"
7
10
  end
8
11
  end
data/lib/hanami/cli.rb CHANGED
@@ -1,13 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/cli"
4
+ require "zeitwerk"
4
5
 
5
6
  module Hanami
7
+ # Extensible command line interface for Hanami.
8
+ #
9
+ # @api public
10
+ # @since 2.0.0
6
11
  module CLI
7
- require_relative "cli/version"
8
- require_relative "cli/error"
9
- require_relative "cli/bundler"
12
+ # @api private
13
+ # @since 2.0.0
14
+ def self.gem_loader
15
+ @gem_loader ||= Zeitwerk::Loader.new.tap do |loader|
16
+ root = File.expand_path("..", __dir__)
17
+ loader.tag = "hanami-cli"
18
+ loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-cli.rb")
19
+ loader.push_dir(root)
20
+ loader.ignore(
21
+ "#{root}/hanami-cli.rb",
22
+ "#{root}/hanami/cli/{errors,version}.rb"
23
+ )
24
+ loader.inflector.inflect("cli" => "CLI")
25
+ loader.inflector.inflect("db" => "DB")
26
+ loader.inflector.inflect("url" => "URL")
27
+ end
28
+ end
29
+
30
+ gem_loader.setup
10
31
  require_relative "cli/commands"
32
+ require_relative "cli/errors"
33
+ require_relative "cli/version"
11
34
 
12
35
  extend Dry::CLI::Registry
13
36
 
@@ -3,15 +3,17 @@
3
3
  require_relative "plugins/slice_readers"
4
4
 
5
5
  module Hanami
6
+ # @since 2.0.0
7
+ # @api private
6
8
  module Console
7
9
  # Hanami app console context
8
10
  #
9
- # @api private
10
11
  # @since 2.0.0
12
+ # @api private
11
13
  class Context < Module
12
- # @api private
13
14
  attr_reader :app
14
15
 
16
+ # @since 2.0.0
15
17
  # @api private
16
18
  def initialize(app)
17
19
  super()
@@ -8,6 +8,7 @@ module Hanami
8
8
  # @api private
9
9
  # @since 2.0.0
10
10
  class SliceReaders < Module
11
+ # @since 2.0.0
11
12
  # @api private
12
13
  def initialize(app)
13
14
  super()
data/lib/hanami-cli.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "hanami/cli"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-08 00:00:00.000000000 Z
11
+ date: 2022-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,26 +25,35 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: dry-cli
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '13.0'
33
+ version: '1.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '2'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: '13.0'
43
+ version: '1.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '2'
41
47
  - !ruby/object:Gem::Dependency
42
- name: dry-cli
48
+ name: dry-files
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
53
  version: '1.0'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.0.1
48
57
  - - "<"
49
58
  - !ruby/object:Gem::Version
50
59
  version: '2'
@@ -55,11 +64,14 @@ dependencies:
55
64
  - - "~>"
56
65
  - !ruby/object:Gem::Version
57
66
  version: '1.0'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.0.1
58
70
  - - "<"
59
71
  - !ruby/object:Gem::Version
60
72
  version: '2'
61
73
  - !ruby/object:Gem::Dependency
62
- name: dry-files
74
+ name: dry-inflector
63
75
  requirement: !ruby/object:Gem::Requirement
64
76
  requirements:
65
77
  - - "~>"
@@ -79,25 +91,33 @@ dependencies:
79
91
  - !ruby/object:Gem::Version
80
92
  version: '2'
81
93
  - !ruby/object:Gem::Dependency
82
- name: dry-inflector
94
+ name: rake
83
95
  requirement: !ruby/object:Gem::Requirement
84
96
  requirements:
85
97
  - - "~>"
86
98
  - !ruby/object:Gem::Version
87
- version: '1.0'
88
- - - "<"
89
- - !ruby/object:Gem::Version
90
- version: '2'
99
+ version: '13.0'
91
100
  type: :runtime
92
101
  prerelease: false
93
102
  version_requirements: !ruby/object:Gem::Requirement
94
103
  requirements:
95
104
  - - "~>"
96
105
  - !ruby/object:Gem::Version
97
- version: '1.0'
98
- - - "<"
106
+ version: '13.0'
107
+ - !ruby/object:Gem::Dependency
108
+ name: zeitwerk
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
99
112
  - !ruby/object:Gem::Version
100
- version: '2'
113
+ version: '2.6'
114
+ type: :runtime
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '2.6'
101
121
  - !ruby/object:Gem::Dependency
102
122
  name: rspec
103
123
  requirement: !ruby/object:Gem::Requirement
@@ -154,6 +174,7 @@ files:
154
174
  - ".gitignore"
155
175
  - ".rspec"
156
176
  - ".rubocop.yml"
177
+ - ".yardopts"
157
178
  - CHANGELOG.md
158
179
  - CODE_OF_CONDUCT.md
159
180
  - Gemfile
@@ -164,10 +185,10 @@ files:
164
185
  - bin/setup
165
186
  - exe/hanami
166
187
  - hanami-cli.gemspec
188
+ - lib/hanami-cli.rb
167
189
  - lib/hanami/cli.rb
168
190
  - lib/hanami/cli/bundler.rb
169
191
  - lib/hanami/cli/command.rb
170
- - lib/hanami/cli/command_line.rb
171
192
  - lib/hanami/cli/commands.rb
172
193
  - lib/hanami/cli/commands/app.rb
173
194
  - lib/hanami/cli/commands/app/command.rb
@@ -182,6 +203,11 @@ files:
182
203
  - lib/hanami/cli/commands/app/db/seed.rb
183
204
  - lib/hanami/cli/commands/app/db/setup.rb
184
205
  - lib/hanami/cli/commands/app/db/structure/dump.rb
206
+ - lib/hanami/cli/commands/app/db/utils/database.rb
207
+ - lib/hanami/cli/commands/app/db/utils/database_config.rb
208
+ - lib/hanami/cli/commands/app/db/utils/mysql.rb
209
+ - lib/hanami/cli/commands/app/db/utils/postgres.rb
210
+ - lib/hanami/cli/commands/app/db/utils/sqlite.rb
185
211
  - lib/hanami/cli/commands/app/db/version.rb
186
212
  - lib/hanami/cli/commands/app/generate.rb
187
213
  - lib/hanami/cli/commands/app/generate/action.rb
@@ -191,15 +217,10 @@ files:
191
217
  - lib/hanami/cli/commands/app/routes.rb
192
218
  - lib/hanami/cli/commands/app/server.rb
193
219
  - lib/hanami/cli/commands/app/version.rb
194
- - lib/hanami/cli/commands/db/utils/database.rb
195
- - lib/hanami/cli/commands/db/utils/database_config.rb
196
- - lib/hanami/cli/commands/db/utils/mysql.rb
197
- - lib/hanami/cli/commands/db/utils/postgres.rb
198
- - lib/hanami/cli/commands/db/utils/sqlite.rb
199
220
  - lib/hanami/cli/commands/gem.rb
200
221
  - lib/hanami/cli/commands/gem/new.rb
201
222
  - lib/hanami/cli/commands/gem/version.rb
202
- - lib/hanami/cli/error.rb
223
+ - lib/hanami/cli/errors.rb
203
224
  - lib/hanami/cli/files.rb
204
225
  - lib/hanami/cli/generators/app/action.rb
205
226
  - lib/hanami/cli/generators/app/action/action.erb
@@ -265,11 +286,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
265
286
  version: '3.0'
266
287
  required_rubygems_version: !ruby/object:Gem::Requirement
267
288
  requirements:
268
- - - ">"
289
+ - - ">="
269
290
  - !ruby/object:Gem::Version
270
- version: 1.3.1
291
+ version: '0'
271
292
  requirements: []
272
- rubygems_version: 3.3.3
293
+ rubygems_version: 3.3.7
273
294
  signing_key:
274
295
  specification_version: 4
275
296
  summary: Hanami CLI
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "./bundler"
4
-
5
- module Hanami
6
- module CLI
7
- class CommandLine
8
- def initialize(bundler: CLI::Bundler.new)
9
- @bundler = bundler
10
- end
11
-
12
- def call(command)
13
- @bundler.exec(command)
14
- end
15
- end
16
- end
17
- end
@@ -1,133 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "database_config"
4
-
5
- module Hanami
6
- module CLI
7
- module Commands
8
- module DB
9
- module Utils
10
- class Database
11
- attr_reader :app, :config
12
-
13
- SCHEME_MAP = {
14
- "sqlite" => -> {
15
- require_relative("sqlite")
16
- Sqlite
17
- },
18
- "postgres" => -> {
19
- require_relative("postgres")
20
- Postgres
21
- },
22
- "postgresql" => -> {
23
- require_relative("postgres")
24
- Postgres
25
- },
26
- "mysql" => -> {
27
- require_relative("mysql")
28
- Mysql
29
- }
30
- }.freeze
31
-
32
- def self.[](app)
33
- database_url =
34
- if app.key?(:settings) && app[:settings].respond_to?(:database_url)
35
- app[:settings].database_url
36
- else
37
- ENV.fetch("DATABASE_URL")
38
- end
39
-
40
- config = DatabaseConfig.new(database_url)
41
-
42
- resolver = SCHEME_MAP.fetch(config.db_type) do
43
- raise "#{config.db_type} is not a supported db scheme"
44
- end
45
-
46
- klass = resolver.()
47
-
48
- klass.new(app: app, config: config)
49
- end
50
-
51
- def initialize(app:, config:)
52
- @app = app
53
- @config = config
54
- end
55
-
56
- def create_command
57
- raise NotImplementedError
58
- end
59
-
60
- def drop_command
61
- raise NotImplementedError
62
- end
63
-
64
- def dump_command
65
- raise NotImplementedError
66
- end
67
-
68
- def load_command
69
- raise NotImplementedError
70
- end
71
-
72
- def root_path
73
- app.root
74
- end
75
-
76
- def rom_config
77
- @rom_config ||=
78
- begin
79
- app.prepare(:persistence)
80
- app.container["persistence.config"]
81
- end
82
- end
83
-
84
- def name
85
- config.db_name
86
- end
87
-
88
- def gateway
89
- rom_config.gateways[:default]
90
- end
91
-
92
- def connection
93
- gateway.connection
94
- end
95
-
96
- def run_migrations(**options)
97
- require "rom/sql"
98
- ROM::SQL.with_gateway(gateway) do
99
- migrator.run(options)
100
- end
101
- end
102
-
103
- def migrator
104
- @migrator ||=
105
- begin
106
- require "rom/sql"
107
- ROM::SQL::Migration::Migrator.new(connection, path: File.join(root_path, "db/migrate"))
108
- end
109
- end
110
-
111
- def applied_migrations
112
- sequel_migrator.applied_migrations
113
- end
114
-
115
- private
116
-
117
- def sequel_migrator
118
- @sequel_migrator ||= begin
119
- require "sequel"
120
- Sequel.extension :migration
121
- Sequel::TimestampMigrator.new(migrator.connection, migrations_path, {})
122
- end
123
- end
124
-
125
- def migrations_path
126
- File.join(root_path, "db/migrate")
127
- end
128
- end
129
- end
130
- end
131
- end
132
- end
133
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "uri"
4
-
5
- module Hanami
6
- module CLI
7
- module Commands
8
- module DB
9
- module Utils
10
- class DatabaseConfig
11
- attr_reader :uri
12
-
13
- def initialize(database_url)
14
- @uri = URI(database_url)
15
- end
16
-
17
- def hostname
18
- uri.hostname
19
- end
20
- alias_method :host, :hostname
21
-
22
- def user
23
- uri.user
24
- end
25
- alias_method :username, :user
26
-
27
- def password
28
- uri.password
29
- end
30
- alias_method :pass, :password
31
-
32
- def port
33
- uri.port
34
- end
35
-
36
- def db_name
37
- @db_name ||= uri.path.gsub(/\A\//, "")
38
- end
39
-
40
- def db_type
41
- uri.scheme
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "database"
4
-
5
- module Hanami
6
- module CLI
7
- module Commands
8
- module DB
9
- module Utils
10
- class Mysql < Database
11
- def create_command
12
- raise "Not Implemented Yet"
13
- end
14
-
15
- def dump_command
16
- raise "Not Implemented Yet"
17
- end
18
-
19
- def load_command
20
- raise "Not Implemented Yet"
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end