hanami-cli_bulma 0.0.1

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 (105) hide show
  1. checksums.yaml +7 -0
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/ci.yml +68 -0
  4. data/.gitignore +13 -0
  5. data/.repobot.yml +9 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +46 -0
  8. data/.tool-versions +1 -0
  9. data/.yardopts +3 -0
  10. data/CHANGELOG.md +374 -0
  11. data/CODE_OF_CONDUCT.md +84 -0
  12. data/Gemfile +31 -0
  13. data/LICENSE.md +22 -0
  14. data/README.md +61 -0
  15. data/Rakefile +12 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +8 -0
  18. data/docker-compose.yml +14 -0
  19. data/exe/hanami +15 -0
  20. data/hanami-cli_bulma.gemspec +47 -0
  21. data/lib/hanami/cli_bulma/bundler.rb +16 -0
  22. data/lib/hanami/cli_bulma/commands/app/command.rb +21 -0
  23. data/lib/hanami/cli_bulma/commands/app/generate/action.rb +25 -0
  24. data/lib/hanami/cli_bulma/commands/app/generate/slice.rb +27 -0
  25. data/lib/hanami/cli_bulma/commands/app/generate/view.rb +23 -0
  26. data/lib/hanami/cli_bulma/commands/app/generate.rb +16 -0
  27. data/lib/hanami/cli_bulma/commands/app.rb +30 -0
  28. data/lib/hanami/cli_bulma/commands/gem/new.rb +28 -0
  29. data/lib/hanami/cli_bulma/commands/gem.rb +21 -0
  30. data/lib/hanami/cli_bulma/commands.rb +35 -0
  31. data/lib/hanami/cli_bulma/generators/app/action/action.erb +17 -0
  32. data/lib/hanami/cli_bulma/generators/app/action/slice_action.erb +17 -0
  33. data/lib/hanami/cli_bulma/generators/app/action.rb +72 -0
  34. data/lib/hanami/cli_bulma/generators/app/slice/action.erb +7 -0
  35. data/lib/hanami/cli_bulma/generators/app/slice/app_css.erb +7 -0
  36. data/lib/hanami/cli_bulma/generators/app/slice/app_js.erb +1 -0
  37. data/lib/hanami/cli_bulma/generators/app/slice/app_layout.erb +46 -0
  38. data/lib/hanami/cli_bulma/generators/app/slice/favicon.ico +0 -0
  39. data/lib/hanami/cli_bulma/generators/app/slice/helpers.erb +10 -0
  40. data/lib/hanami/cli_bulma/generators/app/slice/keep.erb +0 -0
  41. data/lib/hanami/cli_bulma/generators/app/slice/operation.erb +7 -0
  42. data/lib/hanami/cli_bulma/generators/app/slice/relation.erb +8 -0
  43. data/lib/hanami/cli_bulma/generators/app/slice/repo.erb +8 -0
  44. data/lib/hanami/cli_bulma/generators/app/slice/routes.erb +3 -0
  45. data/lib/hanami/cli_bulma/generators/app/slice/struct.erb +8 -0
  46. data/lib/hanami/cli_bulma/generators/app/slice/view.erb +7 -0
  47. data/lib/hanami/cli_bulma/generators/app/slice.rb +26 -0
  48. data/lib/hanami/cli_bulma/generators/app/view/app_template-edit.html.erb +24 -0
  49. data/lib/hanami/cli_bulma/generators/app/view/app_template-index.html.erb +24 -0
  50. data/lib/hanami/cli_bulma/generators/app/view/app_template-new.html.erb +24 -0
  51. data/lib/hanami/cli_bulma/generators/app/view/app_template-show.html.erb +5 -0
  52. data/lib/hanami/cli_bulma/generators/app/view/app_template.html.erb +5 -0
  53. data/lib/hanami/cli_bulma/generators/app/view/app_view-edit.erb +10 -0
  54. data/lib/hanami/cli_bulma/generators/app/view/app_view-index.erb +10 -0
  55. data/lib/hanami/cli_bulma/generators/app/view/app_view-new.erb +10 -0
  56. data/lib/hanami/cli_bulma/generators/app/view/app_view-show.erb +10 -0
  57. data/lib/hanami/cli_bulma/generators/app/view/app_view.erb +10 -0
  58. data/lib/hanami/cli_bulma/generators/app/view/slice_template-edit.html.erb +24 -0
  59. data/lib/hanami/cli_bulma/generators/app/view/slice_template-index.html.erb +26 -0
  60. data/lib/hanami/cli_bulma/generators/app/view/slice_template-new.html.erb +24 -0
  61. data/lib/hanami/cli_bulma/generators/app/view/slice_template-show.html.erb +5 -0
  62. data/lib/hanami/cli_bulma/generators/app/view/slice_template.html.erb +5 -0
  63. data/lib/hanami/cli_bulma/generators/app/view/slice_view-edit.erb +10 -0
  64. data/lib/hanami/cli_bulma/generators/app/view/slice_view-index.erb +13 -0
  65. data/lib/hanami/cli_bulma/generators/app/view/slice_view-new.erb +10 -0
  66. data/lib/hanami/cli_bulma/generators/app/view/slice_view-show.erb +10 -0
  67. data/lib/hanami/cli_bulma/generators/app/view/slice_view.erb +10 -0
  68. data/lib/hanami/cli_bulma/generators/app/view.rb +73 -0
  69. data/lib/hanami/cli_bulma/generators/app/view_context.rb +19 -0
  70. data/lib/hanami/cli_bulma/generators/gem/app/404.html +82 -0
  71. data/lib/hanami/cli_bulma/generators/gem/app/500.html +82 -0
  72. data/lib/hanami/cli_bulma/generators/gem/app/action.erb +12 -0
  73. data/lib/hanami/cli_bulma/generators/gem/app/app.erb +8 -0
  74. data/lib/hanami/cli_bulma/generators/gem/app/app_css.erb +7 -0
  75. data/lib/hanami/cli_bulma/generators/gem/app/app_js.erb +1 -0
  76. data/lib/hanami/cli_bulma/generators/gem/app/app_layout.erb +45 -0
  77. data/lib/hanami/cli_bulma/generators/gem/app/assets.js +16 -0
  78. data/lib/hanami/cli_bulma/generators/gem/app/config_ru.erb +5 -0
  79. data/lib/hanami/cli_bulma/generators/gem/app/dev +8 -0
  80. data/lib/hanami/cli_bulma/generators/gem/app/env.erb +4 -0
  81. data/lib/hanami/cli_bulma/generators/gem/app/favicon.ico +0 -0
  82. data/lib/hanami/cli_bulma/generators/gem/app/gemfile.erb +44 -0
  83. data/lib/hanami/cli_bulma/generators/gem/app/gitignore.erb +9 -0
  84. data/lib/hanami/cli_bulma/generators/gem/app/helpers.erb +10 -0
  85. data/lib/hanami/cli_bulma/generators/gem/app/keep.erb +0 -0
  86. data/lib/hanami/cli_bulma/generators/gem/app/operation.erb +13 -0
  87. data/lib/hanami/cli_bulma/generators/gem/app/package.json.erb +8 -0
  88. data/lib/hanami/cli_bulma/generators/gem/app/procfile.erb +4 -0
  89. data/lib/hanami/cli_bulma/generators/gem/app/puma.erb +47 -0
  90. data/lib/hanami/cli_bulma/generators/gem/app/rakefile.erb +3 -0
  91. data/lib/hanami/cli_bulma/generators/gem/app/readme.erb +1 -0
  92. data/lib/hanami/cli_bulma/generators/gem/app/relation.erb +10 -0
  93. data/lib/hanami/cli_bulma/generators/gem/app/repo.erb +10 -0
  94. data/lib/hanami/cli_bulma/generators/gem/app/routes.erb +7 -0
  95. data/lib/hanami/cli_bulma/generators/gem/app/settings.erb +9 -0
  96. data/lib/hanami/cli_bulma/generators/gem/app/struct.erb +10 -0
  97. data/lib/hanami/cli_bulma/generators/gem/app/types.erb +11 -0
  98. data/lib/hanami/cli_bulma/generators/gem/app/validator.erb +12 -0
  99. data/lib/hanami/cli_bulma/generators/gem/app/view.erb +9 -0
  100. data/lib/hanami/cli_bulma/generators/gem/app.rb +114 -0
  101. data/lib/hanami/cli_bulma/version.rb +11 -0
  102. data/lib/hanami/cli_bulma.rb +50 -0
  103. data/lib/hanami-cli_bulma.rb +3 -0
  104. data/project.yml +2 -0
  105. metadata +242 -0
@@ -0,0 +1,45 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title><%= humanized_app_name %></title>
7
+ <%- if generate_assets? -%>
8
+ <%%= favicon_tag %>
9
+ <%%= stylesheet_tag "app" %>
10
+ <%- end -%>
11
+ </head>
12
+ <body>
13
+ <nav class="navbar" role="navigation" aria-label="main navigation">
14
+ <div class="navbar-brand">
15
+ <a class="navbar-item" href="https://hanamimastery.com">
16
+ <img src="https://hanamimastery.com/logo-hm-letter.jpeg" height="28">
17
+ </a>
18
+ </div>
19
+ <div id="top-navigation" class="navbar-menu">
20
+ <div class="navbar-start">
21
+ <%%= link_to 'Home', '/', class: 'navbar-item' %>
22
+ </div>
23
+ </div>
24
+ </nav>
25
+
26
+ <section class="section">
27
+ <div class="container">
28
+ <%%= yield %>
29
+ </div>
30
+ </section>
31
+
32
+ <footer class="footer">
33
+ <div class="content has-text-centered">
34
+ <p>
35
+ <strong><%= humanized_app_name %></strong>. The source code is licensed
36
+ <a href="http://opensource.org/licenses/mit-license.php">MIT</a>. The website content
37
+ is licensed <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY NC SA 4.0</a>.
38
+ </p>
39
+ </div>
40
+ </footer>
41
+ <%- if generate_assets? -%>
42
+ <%%= javascript_tag "app" %>
43
+ <%- end -%>
44
+ </body>
45
+ </html>
@@ -0,0 +1,16 @@
1
+ import * as assets from "hanami-assets";
2
+
3
+ await assets.run();
4
+
5
+ // To provide additional esbuild (https://esbuild.github.io) options, use the following:
6
+ //
7
+ // Read more at: https://guides.hanamirb.org/assets/customization/
8
+ //
9
+ // await assets.run({
10
+ // esbuildOptionsFn: (args, esbuildOptions) => {
11
+ // // Add to esbuildOptions here. Use `args.watch` as a condition for different options for
12
+ // // compile vs watch.
13
+ //
14
+ // return esbuildOptions;
15
+ // }
16
+ // });
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/boot"
4
+
5
+ run Hanami.app
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env sh
2
+
3
+ if ! gem list foreman -i --silent; then
4
+ echo "Installing foreman..."
5
+ gem install foreman
6
+ fi
7
+
8
+ exec foreman start -f Procfile.dev "$@"
@@ -0,0 +1,4 @@
1
+ # This is checked into source control, so put sensitive values into `.env.local`
2
+ <%- if generate_db? -%>
3
+ DATABASE_URL=<%= database_url %>
4
+ <%- end -%>
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ <%= hanami_gem("hanami") %>
6
+ <%- if generate_assets? -%>
7
+ <%= hanami_gem("assets") %>
8
+ <%- end -%>
9
+ <%= hanami_gem("controller") %>
10
+ <%- if generate_db? -%>
11
+ <%= hanami_gem("db") %>
12
+ <%- end -%>
13
+ <%= hanami_gem("router") %>
14
+ <%= hanami_gem("validations") %>
15
+ <%= hanami_gem("view") %>
16
+
17
+ gem "hanami-cli_bulma", github: "swilgosz/hanami-cli_bulma"
18
+ gem "dry-types", "~> 1.0", ">= 1.6.1"
19
+ gem "dry-operation", github: "dry-rb/dry-operation"
20
+ gem "puma"
21
+ gem "rake"
22
+ <%- if generate_sqlite? -%>
23
+ gem "sqlite3"
24
+ <%- elsif generate_postgres? -%>
25
+ gem "pg"
26
+ <%- elsif generate_mysql? -%>
27
+ gem "mysql2"
28
+ <%- end -%>
29
+
30
+ group :development do
31
+ <%= hanami_gem("webconsole") %>
32
+ end
33
+
34
+ group :development, :test do
35
+ gem "dotenv"
36
+ end
37
+
38
+ group :cli, :development do
39
+ <%= hanami_gem("reloader") %>
40
+ end
41
+
42
+ group :cli, :development, :test do
43
+ <%= hanami_gem("rspec") %>
44
+ end
@@ -0,0 +1,9 @@
1
+ .env*.local
2
+ log/*
3
+ <%- if generate_assets? -%>
4
+ public/
5
+ node_modules/
6
+ <%- end -%>
7
+ <%- if generate_sqlite? -%>
8
+ db/*.sqlite
9
+ <%- end -%>
@@ -0,0 +1,10 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ module <%= camelized_app_name %>
5
+ module Views
6
+ module Helpers
7
+ # Add your view helpers here
8
+ end
9
+ end
10
+ end
File without changes
@@ -0,0 +1,13 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ require "dry/operation"
5
+
6
+ module <%= camelized_app_name %>
7
+ class Operation < Dry::Operation
8
+ <%- if generate_db? -%>
9
+ # Provide `transaction do ... end` method for database transactions
10
+ include Dry::Operation::Extensions::ROM
11
+ <%- end -%>
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "<%= underscored_app_name %>",
3
+ "private": true,
4
+ "type": "module",
5
+ "dependencies": {
6
+ <%= hanami_assets_npm_package %>
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ web: bundle exec hanami server
2
+ <%- if generate_assets? -%>
3
+ assets: bundle exec hanami assets watch
4
+ <%- end -%>
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Environment and port
5
+ #
6
+ port ENV.fetch("<%= Hanami::Port::ENV_VAR %>", <%= Hanami::Port::DEFAULT %>)
7
+ environment ENV.fetch("HANAMI_ENV", "development")
8
+
9
+ #
10
+ # Threads within each Puma/Ruby process (aka worker)
11
+ #
12
+
13
+ # Configure the minimum and maximum number of threads to use to answer requests.
14
+ max_threads_count = ENV.fetch("HANAMI_MAX_THREADS", 5)
15
+ min_threads_count = ENV.fetch("HANAMI_MIN_THREADS") { max_threads_count }
16
+
17
+ threads min_threads_count, max_threads_count
18
+
19
+ #
20
+ # Workers (aka Puma/Ruby processes)
21
+ #
22
+
23
+ puma_concurrency = Integer(ENV.fetch("HANAMI_WEB_CONCURRENCY", 0))
24
+ puma_cluster_mode = puma_concurrency > 1
25
+
26
+ # How many worker (Puma/Ruby) processes to run.
27
+ # Typically this is set to the number of available cores.
28
+ workers puma_concurrency
29
+
30
+ #
31
+ # Cluster mode (aka multiple workers)
32
+ #
33
+
34
+ if puma_cluster_mode
35
+ # Preload the application before starting the workers. Only in cluster mode.
36
+ preload_app!
37
+
38
+ # Code to run immediately before master process forks workers (once on boot).
39
+ #
40
+ # These hooks can block if necessary to wait for background operations unknown
41
+ # to puma to finish before the process terminates. This can be used to close
42
+ # any connections to remote servers (database, redis, …) that were opened when
43
+ # preloading the code.
44
+ before_fork do
45
+ Hanami.shutdown
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/rake_tasks"
@@ -0,0 +1 @@
1
+ # <%= camelized_app_name %>
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/db/relation"
4
+
5
+ module <%= camelized_app_name %>
6
+ module DB
7
+ class Relation < Hanami::DB::Relation
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/db/repo"
4
+
5
+ module <%= camelized_app_name %>
6
+ module DB
7
+ class Repo < Hanami::DB::Repo
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= camelized_app_name %>
4
+ class Routes < Hanami::Routes
5
+ # Add your routes here. See https://guides.hanamirb.org/routing/overview/ for details.
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= camelized_app_name %>
4
+ class Settings < Hanami::Settings
5
+ # Define your app settings here, for example:
6
+ #
7
+ # setting :my_flag, default: false, constructor: Types::Params::Bool
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "hanami/db/struct"
4
+
5
+ module <%= camelized_app_name %>
6
+ module DB
7
+ class Struct < Hanami::DB::Struct
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/types"
4
+
5
+ module <%= camelized_app_name %>
6
+ Types = Dry.Types
7
+
8
+ module Types
9
+ # Define your custom types here
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ require "dry/validation"
5
+ require "dry/schema/messages/i18n"
6
+
7
+ module <%= camelized_app_name %>
8
+ module Validator < Dry::Validation::Contract
9
+ config.messages.backend = :i18n
10
+ config.messages.top_namespace = "validation"
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ # auto_register: false
2
+ # frozen_string_literal: true
3
+
4
+ require "hanami/view"
5
+
6
+ module <%= camelized_app_name %>
7
+ class View < Hanami::View
8
+ end
9
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "erb"
4
+ require "shellwords"
5
+
6
+ module Hanami
7
+ module CLIBulma
8
+ module Generators
9
+ # @since 2.0.0
10
+ # @api private
11
+ module Gem
12
+ # @since 2.0.0
13
+ # @api private
14
+ class App
15
+ # @since 2.0.0
16
+ # @api private
17
+ def initialize(fs:, inflector:)
18
+ super()
19
+ @fs = fs
20
+ @inflector = inflector
21
+ end
22
+
23
+ # @since 2.0.0
24
+ # @api private
25
+ def call(app, context: Hanami::CLI::Generatos::Context.new(inflector, app), &blk)
26
+ generate_app(app, context)
27
+ blk.call
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :fs
33
+
34
+ attr_reader :inflector
35
+
36
+ attr_reader :config
37
+
38
+ def generate_app(app, context) # rubocop:disable Metrics/AbcSize
39
+ fs.write(".gitignore", t("gitignore.erb", context))
40
+ fs.write(".env", t("env.erb", context))
41
+
42
+ fs.write("README.md", t("readme.erb", context))
43
+ fs.write("Gemfile", t("gemfile.erb", context))
44
+ fs.write("Rakefile", t("rakefile.erb", context))
45
+ fs.write("Procfile.dev", t("procfile.erb", context))
46
+ fs.write("config.ru", t("config_ru.erb", context))
47
+
48
+ fs.write("bin/dev", file("dev"))
49
+ fs.chmod("bin/dev", 0o755)
50
+
51
+ fs.write("config/app.rb", t("app.erb", context))
52
+ fs.write("config/settings.rb", t("settings.erb", context))
53
+ fs.write("config/routes.rb", t("routes.erb", context))
54
+ fs.write("config/puma.rb", t("puma.erb", context))
55
+
56
+ fs.write("lib/tasks/.keep", t("keep.erb", context))
57
+ fs.write("lib/#{app}/types.rb", t("types.erb", context))
58
+
59
+ fs.write("app/actions/.keep", t("keep.erb", context))
60
+ fs.write("app/action.rb", t("action.erb", context))
61
+ fs.write("app/view.rb", t("view.erb", context))
62
+ fs.write("app/views/helpers.rb", t("helpers.erb", context))
63
+ fs.write("app/templates/layouts/app.html.erb", t("app_layout.erb", context))
64
+
65
+ if context.generate_assets?
66
+ fs.write("package.json", t("package.json.erb", context))
67
+ fs.write("config/assets.js", file("assets.js"))
68
+ fs.write("app/assets/js/app.js", t("app_js.erb", context))
69
+ fs.write("app/assets/css/app.css", t("app_css.erb", context))
70
+ fs.write("app/assets/images/favicon.ico", file("favicon.ico"))
71
+ end
72
+
73
+ if context.generate_db?
74
+ fs.write("app/db/relation.rb", t("relation.erb", context))
75
+ fs.write("app/relations/.keep", t("keep.erb", context))
76
+
77
+ fs.write("app/db/repo.rb", t("repo.erb", context))
78
+ fs.write("app/repos/.keep", t("keep.erb", context))
79
+
80
+ fs.write("app/db/struct.rb", t("struct.erb", context))
81
+ fs.write("app/structs/.keep", t("keep.erb", context))
82
+
83
+ fs.write("config/db/migrate/.keep" , t("keep.erb", context))
84
+
85
+ if context.generate_sqlite?
86
+ fs.write("db/.keep" , t("keep.erb", context))
87
+ end
88
+ end
89
+
90
+ fs.write("app/operation.rb", t("operation.erb", context))
91
+
92
+ fs.write("public/404.html", file("404.html"))
93
+ fs.write("public/500.html", file("500.html"))
94
+ end
95
+
96
+ def template(path, context)
97
+ require "erb"
98
+
99
+ ERB.new(
100
+ File.read(File.join(__dir__, "app", path)),
101
+ trim_mode: "-"
102
+ ).result(context.ctx)
103
+ end
104
+
105
+ alias_method :t, :template
106
+
107
+ def file(path)
108
+ File.read(File.join(__dir__, "app", path))
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hanami
4
+ module CLIBulma
5
+ # The current hanami-cli_bulma version.
6
+ #
7
+ # @api public
8
+ # @since 0.0.1
9
+ VERSION = "0.0.1"
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/cli"
4
+ require "zeitwerk"
5
+
6
+ module Hanami
7
+ # Extensible command line interface for Hanami.
8
+ #
9
+ # @api public
10
+ # @since 0.0.1
11
+ module CLIBulma
12
+ def self.within_hanami_app?
13
+ require "hanami"
14
+
15
+ !!Hanami.app_path
16
+ rescue LoadError => e
17
+ raise e unless e.path == "hanami"
18
+
19
+ # If for any reason the hanami gem isn't installed, make a simple best effort to determine
20
+ # whether we're inside an app.
21
+ File.exist?("config/app.rb") || File.exist?("app.rb")
22
+ end
23
+
24
+ # @api private
25
+ # @since 0.0.1
26
+ def self.gem_loader
27
+ @gem_loader ||= Zeitwerk::Loader.new.tap do |loader|
28
+ root = File.expand_path("..", __dir__)
29
+ loader.tag = "hanami-cli_bulma"
30
+ loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-cli_bulma.rb")
31
+ loader.push_dir(root)
32
+ loader.ignore(
33
+ "#{root}/hanami-cli_bulma.rb",
34
+ "#{root}/hanami/cli_bulma/{errors,version}.rb"
35
+ )
36
+ loader.inflector.inflect("cli_bulma" => "CLIBulma")
37
+ loader.inflector.inflect("cli" => "CLI")
38
+ loader.inflector.inflect("db" => "DB")
39
+ loader.inflector.inflect("url" => "URL")
40
+ end
41
+ end
42
+
43
+ gem_loader.setup
44
+
45
+ extend Dry::CLI::Registry
46
+ require_relative "cli_bulma/commands"
47
+
48
+ register_commands!
49
+ end
50
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "hanami/cli_bulma"
data/project.yml ADDED
@@ -0,0 +1,2 @@
1
+ name: hanami-cli_bulma
2
+ custom_ci: false