Class BoxGrinder::Config
In: lib/boxgrinder-core/models/config.rb
lib/boxgrinder-core/models/config.rb
Parent: OpenCascade

Methods

deep_merge   deep_merge   new   new  

Public Class methods

[Source]

    # File lib/boxgrinder-core/models/config.rb, line 25
25:     def initialize(values = {})
26:       super({})
27: 
28:       merge!(
29:           :file => ENV['BG_CONFIG_FILE'] || "#{ENV['HOME']}/.boxgrinder/config",
30:           :name => 'BoxGrinder Build',
31:           :platform => :none,
32:           :delivery => :none,
33:           :force => false,
34:           :log_level => :info,
35:           :backtrace => false,
36:           :dir => {
37:               :root => Dir.pwd,
38:               :build => 'build',
39:               :cache => '/var/cache/boxgrinder', # required for appliance-creator
40:               :tmp => '/tmp'
41:           },
42:           :os_config => {},
43:           :platform_config => {},
44:           :delivery_config => {},
45:           :additional_plugins => []
46:       )
47: 
48:       deep_merge(self, YAML.load_file(self.file)) if File.exists?(self.file)
49:       merge!(values.inject({}) { |memo, (k, v)| memo[k.to_sym] = v; memo })
50: 
51:       self.backtrace = true if [:debug, :trace].include?(self.log_level)
52:     end

[Source]

    # File lib/boxgrinder-core/models/config.rb, line 25
25:     def initialize(values = {})
26:       super({})
27: 
28:       merge!(
29:           :file => ENV['BG_CONFIG_FILE'] || "#{ENV['HOME']}/.boxgrinder/config",
30:           :name => 'BoxGrinder Build',
31:           :platform => :none,
32:           :delivery => :none,
33:           :force => false,
34:           :log_level => :info,
35:           :backtrace => false,
36:           :dir => {
37:               :root => Dir.pwd,
38:               :build => 'build',
39:               :cache => '/var/cache/boxgrinder', # required for appliance-creator
40:               :tmp => '/tmp'
41:           },
42:           :os_config => {},
43:           :platform_config => {},
44:           :delivery_config => {},
45:           :additional_plugins => []
46:       )
47: 
48:       deep_merge(self, YAML.load_file(self.file)) if File.exists?(self.file)
49:       merge!(values.inject({}) { |memo, (k, v)| memo[k.to_sym] = v; memo })
50: 
51:       self.backtrace = true if [:debug, :trace].include?(self.log_level)
52:     end

Public Instance methods

[Source]

    # File lib/boxgrinder-core/models/config.rb, line 54
54:     def deep_merge(first, second)
55:       second.each_key do |k|
56:         if first[k.to_sym].is_a?(Hash) and second[k].is_a?(Hash)
57:           deep_merge(first[k.to_sym], second[k])
58:         else
59:           first[k.to_sym] = second[k]
60:         end
61:       end if second
62:     end

[Source]

    # File lib/boxgrinder-core/models/config.rb, line 54
54:     def deep_merge(first, second)
55:       second.each_key do |k|
56:         if first[k.to_sym].is_a?(Hash) and second[k].is_a?(Hash)
57:           deep_merge(first[k.to_sym], second[k])
58:         else
59:           first[k.to_sym] = second[k]
60:         end
61:       end if second
62:     end

[Validate]