hanami-cli 0.2.0 → 2.0.0.alpha2

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +42 -0
  3. data/.gitignore +4 -2
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +25 -1
  6. data/CHANGELOG.md +39 -1
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/Gemfile +13 -6
  9. data/LICENSE.txt +21 -0
  10. data/README.md +13 -488
  11. data/Rakefile +8 -15
  12. data/bin/console +1 -0
  13. data/exe/hanami +10 -0
  14. data/hanami-cli.gemspec +24 -18
  15. data/lib/hanami/cli.rb +10 -121
  16. data/lib/hanami/cli/bundler.rb +73 -0
  17. data/lib/hanami/cli/command.rb +16 -355
  18. data/lib/hanami/cli/command_line.rb +17 -0
  19. data/lib/hanami/cli/commands.rb +26 -0
  20. data/lib/hanami/cli/commands/application.rb +63 -0
  21. data/lib/hanami/cli/commands/db/utils/database.rb +122 -0
  22. data/lib/hanami/cli/commands/db/utils/database_config.rb +48 -0
  23. data/lib/hanami/cli/commands/db/utils/mysql.rb +27 -0
  24. data/lib/hanami/cli/commands/db/utils/postgres.rb +49 -0
  25. data/lib/hanami/cli/commands/db/utils/sqlite.rb +37 -0
  26. data/lib/hanami/cli/commands/gem.rb +21 -0
  27. data/lib/hanami/cli/commands/gem/new.rb +77 -0
  28. data/lib/hanami/cli/commands/gem/version.rb +18 -0
  29. data/lib/hanami/cli/commands/monolith.rb +55 -0
  30. data/lib/hanami/cli/commands/monolith/console.rb +50 -0
  31. data/lib/hanami/cli/commands/monolith/db/create.rb +25 -0
  32. data/lib/hanami/cli/commands/monolith/db/create_migration.rb +29 -0
  33. data/lib/hanami/cli/commands/monolith/db/drop.rb +25 -0
  34. data/lib/hanami/cli/commands/monolith/db/migrate.rb +40 -0
  35. data/lib/hanami/cli/commands/monolith/db/reset.rb +26 -0
  36. data/lib/hanami/cli/commands/monolith/db/rollback.rb +55 -0
  37. data/lib/hanami/cli/commands/monolith/db/sample_data.rb +40 -0
  38. data/lib/hanami/cli/commands/monolith/db/seed.rb +40 -0
  39. data/lib/hanami/cli/commands/monolith/db/setup.rb +24 -0
  40. data/lib/hanami/cli/commands/monolith/db/structure/dump.rb +25 -0
  41. data/lib/hanami/cli/commands/monolith/db/version.rb +26 -0
  42. data/lib/hanami/cli/commands/monolith/generate.rb +14 -0
  43. data/lib/hanami/cli/commands/monolith/generate/action.rb +62 -0
  44. data/lib/hanami/cli/commands/monolith/generate/slice.rb +62 -0
  45. data/lib/hanami/cli/commands/monolith/install.rb +16 -0
  46. data/lib/hanami/cli/commands/monolith/version.rb +18 -0
  47. data/lib/hanami/cli/error.rb +8 -0
  48. data/lib/hanami/cli/generators/context.rb +38 -0
  49. data/lib/hanami/cli/generators/gem/application.rb +21 -0
  50. data/lib/hanami/cli/generators/gem/application/monolith.rb +83 -0
  51. data/lib/hanami/cli/generators/gem/application/monolith/action.erb +21 -0
  52. data/lib/hanami/cli/generators/gem/application/monolith/application.erb +8 -0
  53. data/lib/hanami/cli/generators/gem/application/monolith/config_ru.erb +5 -0
  54. data/lib/hanami/cli/generators/gem/application/monolith/entities.erb +9 -0
  55. data/lib/hanami/cli/generators/gem/application/monolith/env.erb +0 -0
  56. data/lib/hanami/cli/generators/gem/application/monolith/functions.erb +13 -0
  57. data/lib/hanami/cli/generators/gem/application/monolith/gemfile.erb +19 -0
  58. data/lib/hanami/cli/generators/gem/application/monolith/keep.erb +0 -0
  59. data/lib/hanami/cli/generators/gem/application/monolith/operation.erb +18 -0
  60. data/lib/hanami/cli/generators/gem/application/monolith/rakefile.erb +3 -0
  61. data/lib/hanami/cli/generators/gem/application/monolith/readme.erb +1 -0
  62. data/lib/hanami/cli/generators/gem/application/monolith/repository.erb +13 -0
  63. data/lib/hanami/cli/generators/gem/application/monolith/routes.erb +4 -0
  64. data/lib/hanami/cli/generators/gem/application/monolith/settings.erb +6 -0
  65. data/lib/hanami/cli/generators/gem/application/monolith/types.erb +10 -0
  66. data/lib/hanami/cli/generators/gem/application/monolith/validation_contract.erb +14 -0
  67. data/lib/hanami/cli/generators/gem/application/monolith/view_context.erb +15 -0
  68. data/lib/hanami/cli/generators/monolith/action.rb +123 -0
  69. data/lib/hanami/cli/generators/monolith/action/action.erb +13 -0
  70. data/lib/hanami/cli/generators/monolith/action/template.erb +0 -0
  71. data/lib/hanami/cli/generators/monolith/action/template.html.erb +2 -0
  72. data/lib/hanami/cli/generators/monolith/action/view.erb +13 -0
  73. data/lib/hanami/cli/generators/monolith/action_context.rb +76 -0
  74. data/lib/hanami/cli/generators/monolith/slice.rb +56 -0
  75. data/lib/hanami/cli/generators/monolith/slice/action.erb +9 -0
  76. data/lib/hanami/cli/generators/monolith/slice/entities.erb +9 -0
  77. data/lib/hanami/cli/generators/monolith/slice/keep.erb +0 -0
  78. data/lib/hanami/cli/generators/monolith/slice/repository.erb +10 -0
  79. data/lib/hanami/cli/generators/monolith/slice/routes.erb +2 -0
  80. data/lib/hanami/cli/generators/monolith/slice/view.erb +9 -0
  81. data/lib/hanami/cli/generators/monolith/slice_context.rb +33 -0
  82. data/lib/hanami/cli/repl/core.rb +55 -0
  83. data/lib/hanami/cli/repl/irb.rb +41 -0
  84. data/lib/hanami/cli/repl/pry.rb +29 -0
  85. data/lib/hanami/cli/system_call.rb +51 -0
  86. data/lib/hanami/cli/url.rb +34 -0
  87. data/lib/hanami/cli/version.rb +4 -3
  88. data/lib/hanami/console/context.rb +39 -0
  89. data/lib/hanami/console/plugins/slice_readers.rb +42 -0
  90. data/lib/hanami/rake_tasks.rb +52 -0
  91. metadata +138 -41
  92. data/.travis.yml +0 -16
  93. data/lib/hanami/cli/banner.rb +0 -126
  94. data/lib/hanami/cli/command_registry.rb +0 -213
  95. data/lib/hanami/cli/errors.rb +0 -32
  96. data/lib/hanami/cli/option.rb +0 -125
  97. data/lib/hanami/cli/parser.rb +0 -122
  98. data/lib/hanami/cli/program_name.rb +0 -19
  99. data/lib/hanami/cli/registry.rb +0 -328
  100. data/lib/hanami/cli/usage.rb +0 -88
  101. data/script/ci +0 -51
@@ -1,88 +0,0 @@
1
- require "hanami/cli/program_name"
2
-
3
- module Hanami
4
- class CLI
5
- # Command(s) usage
6
- #
7
- # @since 0.1.0
8
- # @api private
9
- module Usage
10
- # @since 0.1.0
11
- # @api private
12
- SUBCOMMAND_BANNER = " [SUBCOMMAND]".freeze
13
-
14
- # @since 0.1.0
15
- # @api private
16
- def self.call(result, out)
17
- out.puts "Commands:"
18
- max_length, commands = commands_and_arguments(result)
19
-
20
- commands.each do |banner, node|
21
- usage = description(node.command) if node.leaf?
22
- out.puts "#{justify(banner, max_length, usage)}#{usage}"
23
- end
24
- end
25
-
26
- # @since 0.1.0
27
- # @api private
28
- def self.commands_and_arguments(result) # rubocop:disable Metrics/MethodLength
29
- max_length = 0
30
- ret = commands(result).each_with_object({}) do |(name, node), memo|
31
- args = if node.leaf?
32
- arguments(node.command)
33
- else
34
- SUBCOMMAND_BANNER
35
- end
36
-
37
- partial = " #{command_name(result, name)}#{args}"
38
- max_length = partial.bytesize if max_length < partial.bytesize
39
- memo[partial] = node
40
- end
41
-
42
- [max_length, ret]
43
- end
44
-
45
- # @since 0.1.0
46
- # @api private
47
- def self.arguments(command) # rubocop:disable Metrics/AbcSize
48
- return unless CLI.command?(command)
49
-
50
- required_arguments = command.required_arguments
51
- optional_arguments = command.optional_arguments
52
-
53
- required = required_arguments.map { |arg| arg.name.upcase }.join(' ') if required_arguments.any?
54
- optional = optional_arguments.map { |arg| "[#{arg.name.upcase}]" }.join(' ') if optional_arguments.any?
55
- result = [required, optional].compact
56
-
57
- " #{result.join(' ')}" unless result.empty?
58
- end
59
-
60
- # @since 0.1.0
61
- # @api private
62
- def self.description(command)
63
- return unless CLI.command?(command)
64
-
65
- " # #{command.description}" unless command.description.nil?
66
- end
67
-
68
- # @since 0.1.0
69
- # @api private
70
- def self.justify(string, padding, usage)
71
- return string.chomp(" ") if usage.nil?
72
- string.ljust(padding + padding / 2)
73
- end
74
-
75
- # @since 0.1.0
76
- # @api private
77
- def self.commands(result)
78
- result.children.sort_by { |name, _| name }
79
- end
80
-
81
- # @since 0.1.0
82
- # @api private
83
- def self.command_name(result, name)
84
- ProgramName.call([result.names, name])
85
- end
86
- end
87
- end
88
- end
data/script/ci DELETED
@@ -1,51 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- run_code_quality_checks() {
6
- bundle exec rubocop .
7
- }
8
-
9
- run_unit_tests() {
10
- bundle exec rake spec:coverage
11
- }
12
-
13
- run_isolation_tests() {
14
- local pwd=$PWD
15
- local root="$pwd/spec/isolation"
16
-
17
- if [ -d $root ]; then
18
- for test in $(find $root -name '*_spec.rb')
19
- do
20
- run_isolation_test $test
21
-
22
- if [ $? -ne 0 ]; then
23
- local exit_code=$?
24
- echo "Failing test: $test"
25
- exit $exit_code
26
- fi
27
- done
28
- fi
29
- }
30
-
31
- run_isolation_test() {
32
- local test=$1
33
-
34
- printf "\n\n\nRunning: $test\n"
35
- ruby $test --options spec/isolation/.rspec
36
- }
37
-
38
- run_test() {
39
- local test=$1
40
-
41
- printf "\n\n\nRunning: $test\n"
42
- COVERAGE=true bundle exec rspec $test
43
- }
44
-
45
- main() {
46
- run_code_quality_checks &&
47
- run_unit_tests &&
48
- run_isolation_tests
49
- }
50
-
51
- main