module ChefRunDeck::CLI

> Chef-RunDeck Launcher

Public Instance Methods

run(argv = ARGV) click to toggle source

> Launch the Application

# File lib/chef-rundeck/cli.rb, line 97
def run(argv = ARGV)
  # => Parse CLI Configuration
  cli = Options.new
  cli.parse_options(argv)

  # => Grab the Default Values
  default = Config.options

  # => Parse JSON Config File (If Specified and Exists)
  json_config = Util.parse_json_config(cli.config[:config_file] || Config.config_file)

  # => Merge Configuration (CLI Wins)
  config = [default, json_config, cli.config].compact.reduce(:merge)

  # => Apply Configuration
  Config.setup do |cfg|
    cfg.config_file         = config[:config_file]
    cfg.cache_timeout       = config[:cache_timeout].to_i
    cfg.bind                = config[:bind]
    cfg.port                = config[:port]
    cfg.auth_file           = config[:auth_file]
    cfg.state_file          = config[:state_file]
    cfg.environment         = config[:environment].to_sym.downcase
    cfg.chef_api_endpoint   = config[:chef_api_endpoint]
    cfg.chef_api_client     = config[:chef_api_client]
    cfg.chef_api_client_key = config[:chef_api_client_key]
    cfg.chef_api_admin      = config[:chef_api_admin]
    cfg.chef_api_admin_key  = config[:chef_api_admin_key]
    cfg.rd_node_username    = config[:rd_node_username]
  end

  # => Launch the API
  API.run!
end