hanami-cli 2.3.0.beta1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -3
  3. data/.rubocop.yml +2 -0
  4. data/.rubocop_todo.yml +150 -0
  5. data/CHANGELOG.md +44 -0
  6. data/README.md +1 -4
  7. data/hanami-cli.gemspec +3 -3
  8. data/lib/hanami/cli/commands/app/command.rb +5 -1
  9. data/lib/hanami/cli/commands/app/console.rb +10 -1
  10. data/lib/hanami/cli/commands/app/db/migrate.rb +5 -2
  11. data/lib/hanami/cli/commands/app/db/rollback.rb +26 -14
  12. data/lib/hanami/cli/commands/app/db/structure/dump.rb +7 -3
  13. data/lib/hanami/cli/commands/app/db/utils/database.rb +22 -0
  14. data/lib/hanami/cli/commands/app/db/utils/mysql.rb +3 -1
  15. data/lib/hanami/cli/commands/app/db/utils/postgres.rb +16 -3
  16. data/lib/hanami/cli/commands/app/db/utils/sqlite.rb +1 -1
  17. data/lib/hanami/cli/commands/app/db/version.rb +2 -0
  18. data/lib/hanami/cli/commands/app/generate/action.rb +9 -12
  19. data/lib/hanami/cli/commands/app/generate/slice.rb +8 -8
  20. data/lib/hanami/cli/commands/app/run.rb +108 -0
  21. data/lib/hanami/cli/commands/app.rb +1 -0
  22. data/lib/hanami/cli/commands/gem/new.rb +33 -11
  23. data/lib/hanami/cli/errors.rb +2 -0
  24. data/lib/hanami/cli/generators/app/action.rb +11 -5
  25. data/lib/hanami/cli/generators/app/component.rb +1 -1
  26. data/lib/hanami/cli/generators/app/relation.rb +1 -1
  27. data/lib/hanami/cli/generators/app/ruby_file.rb +7 -12
  28. data/lib/hanami/cli/generators/app/slice.rb +19 -8
  29. data/lib/hanami/cli/generators/app/view.rb +1 -1
  30. data/lib/hanami/cli/generators/constants.rb +1 -1
  31. data/lib/hanami/cli/generators/context.rb +12 -1
  32. data/lib/hanami/cli/generators/gem/app/context.erb +10 -0
  33. data/lib/hanami/cli/generators/gem/app/gemfile.erb +3 -2
  34. data/lib/hanami/cli/generators/gem/app/readme.erb +6 -6
  35. data/lib/hanami/cli/generators/gem/app/setup.erb +27 -0
  36. data/lib/hanami/cli/generators/gem/app/types.erb +1 -1
  37. data/lib/hanami/cli/generators/gem/app.rb +4 -0
  38. data/lib/hanami/cli/generators/version.rb +5 -7
  39. data/lib/hanami/cli/interactive_system_call.rb +1 -2
  40. data/lib/hanami/cli/system_call.rb +1 -1
  41. data/lib/hanami/cli/version.rb +1 -1
  42. data/lib/hanami/console/context.rb +3 -0
  43. data/lib/hanami/console/plugins/unbooted_slice_warnings.rb +40 -0
  44. data/script/ci +31 -0
  45. metadata +10 -4
@@ -38,27 +38,25 @@ module Hanami
38
38
  "^#{result}"
39
39
  end
40
40
 
41
- # @since 2.0.0
42
41
  # @api private
43
42
  def self.prerelease?
44
43
  version.match?(/alpha|beta|rc/)
45
44
  end
46
45
 
47
46
  # @example
48
- # Hanami::VERSION # => 2.0.0
49
- # Hanami::CLI::Generators::Version.stable_version # => "2.0"
47
+ # Hanami::VERSION # => 2.3.1
48
+ # Hanami::CLI::Generators::Version.stable_version # => "2.3.0"
50
49
  #
51
- # @since 2.0.0
52
50
  # @api private
53
51
  def self.stable_version
54
- version.scan(/\A\d{1,2}\.\d{1,2}/).first
52
+ major_minor = version.scan(/\A\d{1,2}\.\d{1,2}/).first
53
+ "#{major_minor}.0"
55
54
  end
56
55
 
57
56
  # @example
58
57
  # Hanami::VERSION # => 2.0.0.alpha8.1
59
- # Hanami::CLI::Generators::Version.stable_version # => "2.0.0.alpha"
58
+ # Hanami::CLI::Generators::Version.prerelease_version # => "2.0.0.alpha"
60
59
  #
61
- # @since 2.0.0
62
60
  # @api private
63
61
  def self.prerelease_version
64
62
  version.sub(/[[[:digit:]].]*\Z/, "")
@@ -13,13 +13,12 @@ module Hanami
13
13
  @out = out
14
14
  @err = err
15
15
  @exit_after = exit_after
16
- super()
17
16
  end
18
17
 
19
18
  # @api private
20
19
  # @since 2.1.0
21
20
  def call(cmd, *args, env: {}, out_prefix: "")
22
- ::Bundler.with_unbundled_env do
21
+ ::Bundler.with_original_env do
23
22
  threads = []
24
23
  exit_status = 0
25
24
 
@@ -90,7 +90,7 @@ module Hanami
90
90
  out = nil
91
91
  err = nil
92
92
 
93
- ::Bundler.with_unbundled_env do
93
+ ::Bundler.with_original_env do
94
94
  Open3.popen3(env, command(cmd, *args)) do |stdin, stdout, stderr, wait_thr|
95
95
  yield stdin, stdout, stderr, wait_thr if block_given?
96
96
 
@@ -6,6 +6,6 @@ module Hanami
6
6
  #
7
7
  # @api public
8
8
  # @since 2.0.0
9
- VERSION = "2.3.0.beta1"
9
+ VERSION = "2.3.0"
10
10
  end
11
11
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "plugins/slice_readers"
4
+ require_relative "plugins/unbooted_slice_warnings"
4
5
 
5
6
  module Hanami
6
7
  # @since 2.0.0
@@ -21,6 +22,8 @@ module Hanami
21
22
 
22
23
  define_context_methods
23
24
  include Plugins::SliceReaders.new(app)
25
+
26
+ Plugins::UnbootedSliceWarnings.activate
24
27
  end
25
28
 
26
29
  private
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hanami
4
+ module Console
5
+ module Plugins
6
+ # Console plugin that prints a one-time warning when an unbooted slice is asked for its
7
+ # `.keys`.
8
+ #
9
+ # @api private
10
+ module UnbootedSliceWarnings
11
+ module SliceExtension
12
+ end
13
+
14
+ def self.activate
15
+ warning_shown_for_slice = {}
16
+
17
+ # Define the wrapper method with access to the context via closure
18
+ SliceExtension.define_method(:keys) do
19
+ if !booted? && !warning_shown_for_slice[self]
20
+ message = <<~TEXT
21
+ Warning: #{self} is not booted. Run `#{self}.boot` to load all components, or launch the console with `--boot`.
22
+ TEXT
23
+ warn message
24
+
25
+ warning_shown_for_slice[self] = true
26
+ end
27
+
28
+ super()
29
+ end
30
+
31
+ Hanami::Slice::ClassMethods.prepend(SliceExtension)
32
+ end
33
+
34
+ def self.deactivate
35
+ SliceExtension.remove_method :keys
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
data/script/ci ADDED
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ prepare_build() {
6
+ if [ -d coverage ]; then
7
+ rm -rf coverage
8
+ fi
9
+ }
10
+
11
+ print_ruby_version() {
12
+ echo "Using $(ruby -v)"
13
+ echo
14
+ }
15
+
16
+ run_code_quality_checks() {
17
+ bundle exec rubocop .
18
+ }
19
+
20
+ run_unit_tests() {
21
+ bundle exec rake spec
22
+ }
23
+
24
+ main() {
25
+ prepare_build
26
+ print_ruby_version
27
+ run_code_quality_checks
28
+ run_unit_tests
29
+ }
30
+
31
+ main
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0.beta1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Luca Guidi
7
+ - Hanakai team
8
8
  bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
@@ -189,7 +189,7 @@ dependencies:
189
189
  version: '0'
190
190
  description: Hanami command line
191
191
  email:
192
- - me@lucaguidi.com
192
+ - info@hanakai.org
193
193
  executables:
194
194
  - hanami
195
195
  extensions: []
@@ -201,6 +201,7 @@ files:
201
201
  - ".repobot.yml"
202
202
  - ".rspec"
203
203
  - ".rubocop.yml"
204
+ - ".rubocop_todo.yml"
204
205
  - ".yardopts"
205
206
  - CHANGELOG.md
206
207
  - CODE_OF_CONDUCT.md
@@ -255,6 +256,7 @@ files:
255
256
  - lib/hanami/cli/commands/app/install.rb
256
257
  - lib/hanami/cli/commands/app/middleware.rb
257
258
  - lib/hanami/cli/commands/app/routes.rb
259
+ - lib/hanami/cli/commands/app/run.rb
258
260
  - lib/hanami/cli/commands/app/server.rb
259
261
  - lib/hanami/cli/commands/app/version.rb
260
262
  - lib/hanami/cli/commands/gem.rb
@@ -288,6 +290,7 @@ files:
288
290
  - lib/hanami/cli/generators/gem/app/app_layout.erb
289
291
  - lib/hanami/cli/generators/gem/app/assets.js
290
292
  - lib/hanami/cli/generators/gem/app/config_ru.erb
293
+ - lib/hanami/cli/generators/gem/app/context.erb
291
294
  - lib/hanami/cli/generators/gem/app/dev
292
295
  - lib/hanami/cli/generators/gem/app/env.erb
293
296
  - lib/hanami/cli/generators/gem/app/favicon.ico
@@ -306,6 +309,7 @@ files:
306
309
  - lib/hanami/cli/generators/gem/app/routes.erb
307
310
  - lib/hanami/cli/generators/gem/app/seeds.erb
308
311
  - lib/hanami/cli/generators/gem/app/settings.erb
312
+ - lib/hanami/cli/generators/gem/app/setup.erb
309
313
  - lib/hanami/cli/generators/gem/app/struct.erb
310
314
  - lib/hanami/cli/generators/gem/app/types.erb
311
315
  - lib/hanami/cli/generators/gem/app/validator.erb
@@ -325,7 +329,9 @@ files:
325
329
  - lib/hanami/cli/version.rb
326
330
  - lib/hanami/console/context.rb
327
331
  - lib/hanami/console/plugins/slice_readers.rb
332
+ - lib/hanami/console/plugins/unbooted_slice_warnings.rb
328
333
  - project.yml
334
+ - script/ci
329
335
  homepage: https://hanamirb.org
330
336
  licenses:
331
337
  - MIT
@@ -342,7 +348,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
348
  requirements:
343
349
  - - ">="
344
350
  - !ruby/object:Gem::Version
345
- version: '3.1'
351
+ version: '3.2'
346
352
  required_rubygems_version: !ruby/object:Gem::Requirement
347
353
  requirements:
348
354
  - - ">="