Class: Ashiba::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ashiba/configuration.rb

Overview

Class loading and representing all configuration data independent of chosen templates

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initialize class



14
15
16
# File 'lib/ashiba/configuration.rb', line 14

def initialize
  @settings = Hashie::Mash.new
end

Instance Attribute Details

#settingsHashie::Mash

Loaded settings

Returns:

  • (Hashie::Mash)

    the current value of settings



10
11
12
# File 'lib/ashiba/configuration.rb', line 10

def settings
  @settings
end

Instance Method Details

#loadHash

Recurse over possible locations for configuration and stack found values

Returns:

  • (Hash)

    Summary of settings



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ashiba/configuration.rb', line 54

def load
  $logger.info('Loading configuration')

  locations.each do |config|
    $logger.debug("Checking for configuration at #{config}")
    next unless File.file?(config)

    process_config(config)
  end

  $logger.debug('Evaluated configuration as:')
  @settings.each { |k, v| $logger.debug("  Setting #{k} to #{v}") }

  @settings.to_hash # @todo just for compatibility with old codebase
end

#locationsArray

Return all locations to look for configuration files.

Returns:

  • (Array)

    Possible paths for configuration



21
22
23
24
25
26
# File 'lib/ashiba/configuration.rb', line 21

def locations
  [
    '/etc/ashiba/fashibarc',
    "#{ENV['HOME']}/.ashibarc"
  ]
end

#process_config(file) ⇒ void

This method returns an undefined value.

Load values from stated file and merge over previously loaded data, allowing stacking of global + personal configuration

Parameters:

  • filename (String)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ashiba/configuration.rb', line 33

def process_config(file)
  $logger.debug("Processing user configuraton file #{file}")

  begin
    contents = ::YAML.load_file(file)
  rescue Errno::ENOENT => e
    puts e.message
  rescue ::YAML::SyntaxError => e
    puts e.message
  end

  new_settings = Hashie::Mash.new(contents)
  new_settings.each { |k, v| $logger.debug("  Setting #{k} to #{v}") }

  @settings.deep_merge!(new_settings)
end