Module: Hanami::CLI
- Extended by:
- Dry::CLI::Registry
- Defined in:
- lib/hanami/cli.rb,
lib/hanami/cli/url.rb,
lib/hanami/cli/files.rb,
lib/hanami/cli/errors.rb,
lib/hanami/cli/naming.rb,
lib/hanami/cli/server.rb,
lib/hanami/cli/bundler.rb,
lib/hanami/cli/command.rb,
lib/hanami/cli/version.rb,
lib/hanami/cli/commands.rb,
lib/hanami/cli/repl/irb.rb,
lib/hanami/cli/repl/pry.rb,
lib/hanami/cli/repl/core.rb,
lib/hanami/cli/rake_tasks.rb,
lib/hanami/cli/system_call.rb,
lib/hanami/cli/commands/app.rb,
lib/hanami/cli/commands/gem.rb,
lib/hanami/cli/commands/app/dev.rb,
lib/hanami/cli/commands/app/run.rb,
lib/hanami/cli/commands/gem/new.rb,
lib/hanami/cli/generators/context.rb,
lib/hanami/cli/generators/gem/app.rb,
lib/hanami/cli/generators/version.rb,
lib/hanami/cli/commands/app/assets.rb,
lib/hanami/cli/commands/app/routes.rb,
lib/hanami/cli/commands/app/server.rb,
lib/hanami/cli/generators/app/part.rb,
lib/hanami/cli/generators/app/repo.rb,
lib/hanami/cli/generators/app/view.rb,
lib/hanami/cli/ruby_file_generator.rb,
lib/hanami/cli/commands/app/command.rb,
lib/hanami/cli/commands/app/console.rb,
lib/hanami/cli/commands/app/db/drop.rb,
lib/hanami/cli/commands/app/db/seed.rb,
lib/hanami/cli/commands/app/install.rb,
lib/hanami/cli/commands/app/version.rb,
lib/hanami/cli/commands/gem/version.rb,
lib/hanami/cli/generators/app/slice.rb,
lib/hanami/cli/generators/constants.rb,
lib/hanami/cli/commands/app/generate.rb,
lib/hanami/cli/generators/app/action.rb,
lib/hanami/cli/generators/app/struct.rb,
lib/hanami/cli/commands/app/db/create.rb,
lib/hanami/cli/commands/app/db/command.rb,
lib/hanami/cli/commands/app/db/migrate.rb,
lib/hanami/cli/commands/app/db/prepare.rb,
lib/hanami/cli/commands/app/db/version.rb,
lib/hanami/cli/commands/app/middleware.rb,
lib/hanami/cli/generators/app/relation.rb,
lib/hanami/cli/interactive_system_call.rb,
lib/hanami/cli/commands/app/db/rollback.rb,
lib/hanami/cli/generators/app/component.rb,
lib/hanami/cli/generators/app/migration.rb,
lib/hanami/cli/generators/app/operation.rb,
lib/hanami/cli/generators/app/ruby_file.rb,
lib/hanami/cli/commands/app/assets/watch.rb,
lib/hanami/cli/commands/app/generate/part.rb,
lib/hanami/cli/commands/app/generate/repo.rb,
lib/hanami/cli/commands/app/generate/view.rb,
lib/hanami/cli/middleware_stack_inspector.rb,
lib/hanami/cli/commands/app/assets/command.rb,
lib/hanami/cli/commands/app/assets/compile.rb,
lib/hanami/cli/commands/app/db/utils/mysql.rb,
lib/hanami/cli/commands/app/generate/slice.rb,
lib/hanami/cli/commands/app/db/utils/sqlite.rb,
lib/hanami/cli/commands/app/generate/action.rb,
lib/hanami/cli/commands/app/generate/struct.rb,
lib/hanami/cli/commands/app/generate/command.rb,
lib/hanami/cli/commands/app/db/structure/dump.rb,
lib/hanami/cli/commands/app/db/structure/load.rb,
lib/hanami/cli/commands/app/db/utils/database.rb,
lib/hanami/cli/commands/app/db/utils/postgres.rb,
lib/hanami/cli/commands/app/generate/relation.rb,
lib/hanami/cli/generators/app/ruby_class_file.rb,
lib/hanami/cli/commands/app/generate/component.rb,
lib/hanami/cli/commands/app/generate/migration.rb,
lib/hanami/cli/commands/app/generate/operation.rb,
lib/hanami/cli/generators/app/ruby_module_file.rb
Overview
Extensible command line interface for Hanami.
Defined Under Namespace
Modules: Commands, Generators, Repl, URL Classes: BundleInstallError, Bundler, Command, ConflictingOptionsError, DatabaseExistenceCheckError, DatabaseNotSupportedError, Error, FileAlreadyExistsError, Files, ForbiddenAppNameError, HanamiExecError, HanamiInstallError, InteractiveSystemCall, InvalidActionNameError, InvalidMigrationNameError, InvalidURLError, InvalidURLPrefixError, MiddlewareStackInspector, MissingSliceError, Naming, NotImplementedError, PathAlreadyExistsError, RakeTasks, RubyFileGenerator, Server, SystemCall, UnknownHTTPMethodError, UnsupportedDatabaseSchemeError
Constant Summary collapse
- VERSION =
The current hanami-cli version.
"2.3.5"
Class Method Summary collapse
- .gem_loader ⇒ Object private
- .register_commands!(within_hanami_app = within_hanami_app?) ) ⇒ Object private
-
.within_hanami_app? ⇒ Boolean
private
Returns true if the CLI is being called from inside an Hanami app.
Class Method Details
.gem_loader ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/hanami/cli.rb', line 14 def self.gem_loader @gem_loader ||= Zeitwerk::Loader.new.tap do |loader| root = File.("..", __dir__) loader.tag = "hanami-cli" loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-cli.rb") loader.push_dir(root) loader.ignore( "#{root}/hanami-cli.rb", "#{root}/hanami/cli/{errors,version}.rb" ) loader.inflector.inflect("cli" => "CLI") loader.inflector.inflect("db" => "DB") loader.inflector.inflect("url" => "URL") end end |
.register_commands!(within_hanami_app = within_hanami_app?) ) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/hanami/cli/commands.rb', line 45 def self.register_commands!(within_hanami_app = within_hanami_app?) commands = if within_hanami_app require_relative "commands/app" Commands::App else require_relative "commands/gem" Commands::Gem end extend(commands) end |
.within_hanami_app? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns true if the CLI is being called from inside an Hanami app.
This is typically used to determine whether to register commands that are applicable either inside or outside an app.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/hanami/cli/commands.rb', line 14 def self.within_hanami_app? require "hanami" !!Hanami.app_path rescue LoadError => exception # Only rescue: # # 1. LoadError, due to hanami itself being missing, or # 2. Gem::LoadError, indicating gem version conflicts or other gem-related issues while # loading hanami. # # This allows us to work around global gem version conflicts (e.g. with gems like bigdecimal, # which can come bundled with Ruby while also being upgraded independently) while still # raising errors for other missing requires. raise exception unless exception.path == "hanami" || exception.is_a?(Gem::LoadError) # If we can't load the hanami gem, fall back to a simple file check. File.exist?("config/app.rb") end |