Class: StackMaster::ParameterLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/stack_master/parameter_loader.rb

Constant Summary collapse

COMPILE_TIME_PARAMETERS_KEY =
'compile_time_parameters'

Class Method Summary collapse

Class Method Details

.create_compile_time_parameters(parameters) ⇒ Object



39
40
41
# File 'lib/stack_master/parameter_loader.rb', line 39

def self.create_compile_time_parameters(parameters)
  (parameters[COMPILE_TIME_PARAMETERS_KEY] || parameters[COMPILE_TIME_PARAMETERS_KEY.camelize] || {}).deep_dup
end

.create_template_parameters(parameters) ⇒ Object



32
33
34
35
36
37
# File 'lib/stack_master/parameter_loader.rb', line 32

def self.create_template_parameters(parameters)
  parameters.deep_dup.tap do |parameters_clone|
    parameters_clone.delete(COMPILE_TIME_PARAMETERS_KEY) ||
      parameters_clone.delete(COMPILE_TIME_PARAMETERS_KEY.camelize)
  end
end

.load(parameter_files: [], parameters: {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/stack_master/parameter_loader.rb', line 7

def self.load(parameter_files: [], parameters: {})
  StackMaster.debug 'Searching for parameter files...'
  all_parameters = parameter_files.map { |file_name| load_parameters(file_name) } + [parameters]
  all_parameters.reduce({ template_parameters: {}, compile_time_parameters: {} }) do |hash, parameters|
    template_parameters = create_template_parameters(parameters)
    compile_time_parameters = create_compile_time_parameters(parameters)

    merge_and_camelize(hash[:template_parameters], template_parameters)
    merge_and_camelize(hash[:compile_time_parameters], compile_time_parameters)
    hash
  end
end

.load_file(file_name) ⇒ Object



28
29
30
# File 'lib/stack_master/parameter_loader.rb', line 28

def self.load_file(file_name)
  YAML.load(File.read(file_name)) || {}
end

.load_parameters(file_name) ⇒ Object



22
23
24
25
26
# File 'lib/stack_master/parameter_loader.rb', line 22

def self.load_parameters(file_name)
  file_exists = File.exist?(file_name)
  StackMaster.debug file_exists ? "  #{file_name} found" : "  #{file_name} not found"
  file_exists ? load_file(file_name) : {}
end

.merge_and_camelize(hash, parameters) ⇒ Object



43
44
45
# File 'lib/stack_master/parameter_loader.rb', line 43

def self.merge_and_camelize(hash, parameters)
  parameters.each { |key, value| hash[key.camelize] = value }
end