Module: Armada::Configuration

Defined in:
lib/armada/configuration.rb

Class Method Summary collapse

Class Method Details

.load!(project, environment, cli_options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/armada/configuration.rb', line 5

def self.load!(project, environment, cli_options = {})
  projects_dir = Dir.getwd()
  config_file  = "#{project}.rake"

  if File.exists?(File.join(projects_dir, config_file))
    Rake.load_rakefile File.join(File.join(projects_dir, config_file))
  elsif File.exists?(config_file)
    Rake.load_rakefile config_file
  else
    Armada.ui.error "Can't find '#{config_file}'!"
  end

  Object.send :include, Armada::DeployDSL
  task = Rake::Task["environment:#{environment}"]
  task.set_current_environment environment.to_sym
  task.invoke

  task_options = Thor::CoreExt::HashWithIndifferentAccess.new(env[environment.to_sym])
  env_vars = task_options[:env_vars]
  env_vars.merge!(cli_options[:env_vars]) if cli_options[:env_vars] # If I try and merge cli_options into task_options it overrides the task_options[:env_vars] hash.
  options = task_options.merge(cli_options)
  options[:env_vars]              = env_vars
  options[:tag]                   = 'latest' unless options[:tag]
  options[:health_check_endpoint] = '/'      unless options[:health_check_endpoint]
  options[:dockercfg]             = Armada::Docker::Config.load options[:dockercfg] if options[:dockercfg]
  options
end