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