Class: Lexicon::Cli::Extension::CommonExtension

Inherits:
ExtensionBase show all
Defined in:
lib/lexicon/cli/extension/common_extension.rb

Constant Summary collapse

LOGGER_LEVEL =
make_parameter('logger_level')
PACKAGE_DIR =
make_parameter('package_dir')
PACKAGE_SCHEMA_PATH =
make_parameter('package_schema')
SCHEMA_VALIDATOR =
make_definition('schema_validator', factory(Lexicon::Common::Schema::ValidatorFactory, :build))

Instance Method Summary collapse

Constructor Details

#initialize(data_root:) ⇒ CommonExtension

Returns a new instance of CommonExtension.



15
16
17
# File 'lib/lexicon/cli/extension/common_extension.rb', line 15

def initialize(data_root:)
  @data_root = data_root
end

Instance Method Details

#boot(container) ⇒ Object

Parameters:

  • container (Corindon::DependencyInjection::Container)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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

#commandsObject



53
54
55
56
57
58
# 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