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/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/view.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/commands/app/db/reset.rb,
lib/hanami/cli/commands/app/db/setup.rb,
lib/hanami/cli/commands/app/generate.rb,
lib/hanami/cli/generators/app/action.rb,
lib/hanami/cli/commands/app/db/create.rb,
lib/hanami/cli/commands/app/db/migrate.rb,
lib/hanami/cli/commands/app/db/version.rb,
lib/hanami/cli/commands/app/middleware.rb,
lib/hanami/cli/interactive_system_call.rb,
lib/hanami/cli/commands/app/db/rollback.rb,
lib/hanami/cli/commands/app/assets/watch.rb,
lib/hanami/cli/commands/app/generate/part.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/sample_data.rb,
lib/hanami/cli/commands/app/db/utils/mysql.rb,
lib/hanami/cli/commands/app/generate/slice.rb,
lib/hanami/cli/generators/app/part_context.rb,
lib/hanami/cli/generators/app/view_context.rb,
lib/hanami/cli/commands/app/db/utils/sqlite.rb,
lib/hanami/cli/commands/app/generate/action.rb,
lib/hanami/cli/generators/app/slice_context.rb,
lib/hanami/cli/generators/app/action_context.rb,
lib/hanami/cli/commands/app/db/structure/dump.rb,
lib/hanami/cli/commands/app/db/utils/database.rb,
lib/hanami/cli/commands/app/db/utils/postgres.rb,
lib/hanami/cli/commands/app/db/create_migration.rb,
lib/hanami/cli/commands/app/db/utils/database_config.rb

Overview

Extensible command line interface for Hanami.

Since:

  • 2.0.0

Defined Under Namespace

Modules: Commands, Generators, Repl, URL Classes: BundleInstallError, Bundler, Command, Error, Files, HanamiExecError, HanamiInstallError, InteractiveSystemCall, InvalidActionNameError, InvalidURLError, InvalidURLPrefixError, MiddlewareStackInspector, MissingSliceError, Naming, NotImplementedError, PathAlreadyExistsError, RakeTasks, Server, SystemCall, UnknownHTTPMethodError, UnsupportedDatabaseSchemeError

Constant Summary collapse

VERSION =

The current hanami-cli version.

Since:

  • 2.0.0

"2.1.1"

Class Method Summary collapse

Class Method Details

.gem_loaderObject

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.

Since:

  • 2.0.0



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.expand_path("..", __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.

Since:

  • 2.0.0



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/hanami/cli/commands.rb', line 37

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.

Returns:

  • (Boolean)

Since:

  • 2.0.0



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/hanami/cli/commands.rb', line 14

def self.within_hanami_app?
  require "hanami"

  !!Hanami.app_path
rescue LoadError => e
  raise e unless e.path == "hanami"

  # If for any reason the hanami gem isn't installed, make a simple best effort to determine
  # whether we're inside an app.
  File.exist?("config/app.rb") || File.exist?("app.rb")
end