class Kafo::KafoConfigure

Attributes

app_options[RW]
config[RW]
config_file[RW]
exit_handler[RW]
gem_root[RW]
hooking[W]
kafo_modules_dir[RW]
logger[RW]
modules_dir[RW]
root_dir[RW]
temp_config_file[RW]
verbose[RW]

Public Class Methods

app_option(*args, &block) click to toggle source
# File lib/kafo/kafo_configure.rb, line 144
def self.app_option(*args, &block)
  self.app_options ||= []
  self.app_options.push self.option(*args, &block)
  self.app_options.last
end
exit(code, &block) click to toggle source
# File lib/kafo/kafo_configure.rb, line 120
def self.exit(code, &block)
  exit_handler.exit(code, &block)
end
exit_code() click to toggle source
# File lib/kafo/kafo_configure.rb, line 124
def self.exit_code
  self.exit_handler.exit_code
end
help(*args) click to toggle source
# File lib/kafo/kafo_configure.rb, line 137
def self.help(*args)
  kafo          = args.pop
  builder_class = kafo.full_help? ? HelpBuilders::Advanced : HelpBuilders::Basic
  args.push builder_class.new(kafo.params)
  super(*args)
end
hooking() click to toggle source
# File lib/kafo/kafo_configure.rb, line 34
def hooking
  @hooking ||= Hooking.new
end
new(*args) click to toggle source
# File lib/kafo/kafo_configure.rb, line 39
def initialize(*args)
  self.class.logger           = Logger.new
  self.class.exit_handler     = ExitHandler.new
  self.class.config_file      = config_file
  self.class.config           = Configuration.new(self.class.config_file)
  self.class.root_dir         = File.expand_path(self.class.config.app[:installer_dir])
  modules_dir                 = self.class.config.app[:modules_dir] || (self.class.config.app[:installer_dir] + '/modules')
  self.class.modules_dir      = File.expand_path(modules_dir)
  self.class.gem_root         = File.join(File.dirname(__FILE__), '../../')
  self.class.kafo_modules_dir = self.class.config.app[:kafo_modules_dir] || (self.class.gem_root + '/modules')
  @progress_bar               = nil
  self.class.hooking.load
  self.class.hooking.kafo     = self

  super

  self.class.hooking.execute(:boot)
  set_app_options
  # we need to parse app config params using clamp even before run method does it
  # so we limit parsing only to app config options (because of --help and later defined params)
  parse clamp_app_arguments
  parse_app_arguments
  Logger.setup
  ColorScheme.new(config).setup

  self.class.hooking.execute(:init)
  set_parameters # here the params gets parsed and we need app config populated
  set_options
end
run() click to toggle source
# File lib/kafo/kafo_configure.rb, line 114
def self.run
  return super
rescue SystemExit => e
  self.exit_handler.exit(self.exit_code) # fail in initialize
end

Public Instance Methods

add_module(name) click to toggle source
# File lib/kafo/kafo_configure.rb, line 162
def add_module(name)
  config.add_module(name)
  reset_params_cache
  self.module(name)
end
config() click to toggle source
# File lib/kafo/kafo_configure.rb, line 69
def config
  self.class.config
end
execute() click to toggle source
# File lib/kafo/kafo_configure.rb, line 77
def execute
  parse_cli_arguments

  if (self.class.verbose = !!verbose?)
    Logger.setup_verbose
  else
    @progress_bar = self.class.config.app[:colors] ? ProgressBars::Colored.new : ProgressBars::BlackWhite.new
  end

  unless SystemChecker.check
    puts "Your system does not meet configuration criteria"
    self.class.exit(:invalid_system)
  end

  self.class.hooking.execute(:pre_validations)
  if interactive?
    wizard = Wizard.new(self)
    wizard.run
  else
    unless validate_all
      puts "Error during configuration, exiting"
      self.class.exit(:invalid_values)
    end
  end

  if dont_save_answers?
    self.class.temp_config_file = temp_config_file
    store_params(temp_config_file)
  else
    store_params
  end
  run_installation
  return self
rescue SystemExit
  return self
end
exit_code() click to toggle source
# File lib/kafo/kafo_configure.rb, line 128
def exit_code
  self.class.exit_code
end
help() click to toggle source
# File lib/kafo/kafo_configure.rb, line 133
def help
  self.class.help(invocation_path, self)
end
logger() click to toggle source
# File lib/kafo/kafo_configure.rb, line 73
def logger
  self.class.logger
end
module(name) click to toggle source
# File lib/kafo/kafo_configure.rb, line 172
def module(name)
  modules.detect { |m| m.name == name }
end
modules() click to toggle source
# File lib/kafo/kafo_configure.rb, line 168
def modules
  config.modules.sort
end
param(mod, name) click to toggle source
# File lib/kafo/kafo_configure.rb, line 176
def param(mod, name)
  params.detect { |p| p.name == name && p.module.name == mod }
end
params() click to toggle source
# File lib/kafo/kafo_configure.rb, line 150
def params
  @params ||= modules.map(&:params).flatten
rescue KafoParsers::ModuleName => e
  puts e
  self.class.exit(:unknown_module)
end
reset_params_cache() click to toggle source
# File lib/kafo/kafo_configure.rb, line 157
def reset_params_cache
  @params = nil
  params
end