class Lexicon::Cli::Extension::CommonExtension

Constants

LOGGER_LEVEL
PACKAGE_DIR
PACKAGE_SCHEMA_PATH
SCHEMA_VALIDATOR

Attributes

data_root[R]

@return [Pathname]

Public Class Methods

new(data_root:) click to toggle source
# File lib/lexicon/cli/extension/common_extension.rb, line 15
def initialize(data_root:)
  @data_root = data_root
end

Public Instance Methods

boot(container) click to toggle source

@param [Corindon::DependencyInjection::Container] container

# File lib/lexicon/cli/extension/common_extension.rb, line 20
def boot(container)
  register_parameters(
    container,
    {
      PACKAGE_SCHEMA_PATH => package_schema_file,
      PACKAGE_DIR => data_root.join('out'),
      LOGGER_LEVEL => Logger::ERROR,
    }
  )

  container.add_definition(Lexicon::Common::Database::Factory)
  container.add_definition(Lexicon::Common::Package::DirectoryPackageLoader) do
    args(CommonExtension::PACKAGE_DIR, schema_validator: CommonExtension::SCHEMA_VALIDATOR)
  end
  container.add_definition(Lexicon::Common::Package::PackageIntegrityValidator) { args(shell: Lexicon::Common::ShellExecutor) }
  container.add_definition(Lexicon::Common::Schema::ValidatorFactory) { args(CommonExtension::PACKAGE_SCHEMA_PATH) }
  container.add_definition(Lexicon::Common::ShellExecutor)
  container.add_definition(Logger) { args(value(STDOUT), level: LOGGER_LEVEL) }
  container.add_definition(SCHEMA_VALIDATOR)

  container.on_service_built(->(service, container) {
    if service.is_a?(Lexicon::Common::Mixin::ContainerAware)
      service.container = container
    end
  })

  container.on_service_built(->(service, container) {
    if service.is_a?(Lexicon::Common::Mixin::LoggerAware)
      service.logger = container.get(Logger)
    end
  })
end
commands() click to toggle source
# File lib/lexicon/cli/extension/common_extension.rb, line 53
def commands
  proc do
    desc 'console', 'Start a console'
    subcommand 'console', Command::ConsoleCommand
  end
end

Private Instance Methods

package_schema_file() click to toggle source

@return [Pathname]

# File lib/lexicon/cli/extension/common_extension.rb, line 66
def package_schema_file
  Pathname.new(Gem::Specification.find_by_name('lexicon-common').gem_dir).join(Lexicon::Common::LEXICON_SCHEMA_RELATIVE_PATH)
end