module ConfigFiles::ConfigFilesClassMethods

Attributes

directories[RW]

Public Class Methods

extended(base) click to toggle source
# File lib/config_files.rb, line 26
def self.extended(base)
  base.instance_eval do
    self.directories=default_directories
  end
end

Public Instance Methods

any_extension() click to toggle source
# File lib/config_files.rb, line 32
def any_extension
  '*'
end
build_combined(file) click to toggle source
# File lib/config_files.rb, line 58
def build_combined(file)
  merged_hash(file)
end
config_directories(*arr) click to toggle source
# File lib/config_files.rb, line 44
def config_directories(*arr)
  self.directories||=default_directories
  arr.each do |directory_list|
    directory_list.each do |key, value|
      self.directories[key]=value.map { |dir| ::File.expand_path(dir) }
      meta_def("#{key}_dir") { @directories[key] }
    end
  end
end
config_files(*arr)
config_key() click to toggle source
# File lib/config_files.rb, line 36
def config_key
  :etc
end
default_directories() click to toggle source
# File lib/config_files.rb, line 40
def default_directories
  { :etc => ['config', 'etc', '/etc'] }
end
dynamic_config_files(*arr) click to toggle source
# File lib/config_files.rb, line 69
def dynamic_config_files(*arr)
  arr.each do |file|
    meta_def(file) { build_combined(file) }
  end
end
Also aliased as: config_files
merged_hash(file) click to toggle source
# File lib/config_files.rb, line 54
def merged_hash(file)
  config_files(file).inject({}) { |master, file|  master.deep_merge(FileFactory.(file)) }
end
static_config_files(*arr) click to toggle source
# File lib/config_files.rb, line 62
def static_config_files(*arr)
  arr.each do |file|
    content=build_combined(file)
    meta_def(file) { content }
  end
end

Private Instance Methods

directory_listing(directory, file) click to toggle source
# File lib/config_files.rb, line 78
def directory_listing(directory, file)
  ::Dir.glob(::File.join(directory, "#{file}.*"))
end
files(file, key=config_key) click to toggle source
# File lib/config_files.rb, line 90
def files(file, key=config_key)
  directory_listing(first_directory(file, key), file)
end
first_directory(file, key=config_key) click to toggle source
# File lib/config_files.rb, line 82
def first_directory(file, key=config_key)
  begin
    self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
  rescue NoMethodError=>e
    raise NoDirectoryEntry, "Unable to find #{key} in #{self.directories}"
  end
end