class Herdsman::Config

Attributes

config[R]
overrides[R]

Public Class Methods

new(path, overrides = {}) click to toggle source
# File lib/herdsman/config.rb, line 6
def initialize(path, overrides = {})
  @config    = read_config!(path)
  @overrides = overrides
  validate!
end

Public Instance Methods

repos() click to toggle source
# File lib/herdsman/config.rb, line 12
def repos
  config_repos.map do |herd_member_config|
    args = herd_member_args(herd_member_config)
    herd_member_paths(herd_member_config).map do |path|
      HerdMemberConfig.new(path, args, overrides, config_defaults)
    end
  end.flatten
end

Private Instance Methods

config_defaults() click to toggle source
# File lib/herdsman/config.rb, line 31
def config_defaults
  config.fetch('defaults')
rescue
  {}
end
config_repos() click to toggle source
# File lib/herdsman/config.rb, line 37
def config_repos
  config['repos'] || config['repositories'] || []
end
herd_member_args(herd_member_config) click to toggle source
# File lib/herdsman/config.rb, line 52
def herd_member_args(herd_member_config)
  herd_member_config.select { |key, _| key != 'path' }
rescue
  {}
end
herd_member_path(herd_member_config) click to toggle source
# File lib/herdsman/config.rb, line 46
def herd_member_path(herd_member_config)
  herd_member_config.fetch('path')
rescue
  herd_member_config
end
herd_member_paths(herd_member_config) click to toggle source
# File lib/herdsman/config.rb, line 41
def herd_member_paths(herd_member_config)
  config_path = herd_member_path(herd_member_config)
  Dir.glob(config_path).select { |fn| File.directory?(fn) }
end
read_config!(path) click to toggle source
# File lib/herdsman/config.rb, line 25
def read_config!(path)
  YAML.load_file(path)
rescue
  raise 'No config found'
end
validate!() click to toggle source
# File lib/herdsman/config.rb, line 58
def validate!
  raise 'Invalid config' unless config.is_a?(Hash) && repos.is_a?(Array)
  raise 'No repos defined' if repos.empty?
  repos.each do |repo|
    unless File.directory?(repo.path)
      raise "#{repo.path} is not a directory"
    end
  end
end