class Lexicon::Cli::Application

Attributes

args[R]
extensions[R]

@return [Array<Lexicon::Cli::ExtensionBase>]

Public Class Methods

new(args, extensions: []) click to toggle source
# File lib/lexicon/cli/application.rb, line 8
def initialize(args, extensions: [])
  @args = args
  @extensions = extensions
end

Public Instance Methods

start() click to toggle source
# File lib/lexicon/cli/application.rb, line 13
def start
  container = Corindon::DependencyInjection::Container.new
  extensions.each do |extension|
    extension.boot(container)
  end

  make_app(extensions).start(args, container: container)
end

Private Instance Methods

make_app(extensions) click to toggle source

@param [Array<Lexicon::Cli::ExtensionBase>] @return [Class]

# File lib/lexicon/cli/application.rb, line 29
def make_app(extensions)
  Class.new(CliBase) do
    extensions.each do |extension|
      if (commands = extension.commands).is_a?(Proc)
        instance_eval(&commands)
      end
    end
  end
end