Class: Twing::Cli

Inherits:
Object
  • Object
show all
Defined in:
lib/twing/cli.rb

Constant Summary collapse

SettingFileNotFound =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Cli

Returns a new instance of Cli.



10
11
12
13
14
15
16
17
# File 'lib/twing/cli.rb', line 10

def initialize(app)
  @app = app
  @setting_loader = Initializer.new(true)
  @initializer = Initializer.new
  @setting = {}
  regist_setting_loader
  regist_initializer
end

Instance Attribute Details

#initializerObject (readonly)

Returns the value of attribute initializer.



8
9
10
# File 'lib/twing/cli.rb', line 8

def initializer
  @initializer
end

Instance Method Details

#parseObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/twing/cli.rb', line 19

def parse
  argv = @setting_loader.init(ARGV)

  raise SettingFileNotFound if @setting.size.zero?

  load_plugins
  @app.init_modules
  @initializer.init(argv)

  cli_options = @initializer.options
  setting = Hashie::Mash.new @setting.merge(cli_options)
  options = @setting.reduce({}) do |acc, (k, v)|
    key = k.to_sym
    acc[key] = v unless cli_options.keys.include?(key)
    acc
  end
  @initializer.call(options, setting)

  setting
end