Sha256: 0d8b5bf4f7821ae0aa1edb85fe7a090c831f7a4f72f7834a68b00e56f88b5990

Contents?: true

Size: 963 Bytes

Versions: 11

Compression:

Stored size: 963 Bytes

Contents

require 'yaml'
require 'deep_merge/core'

class ConfigBuilder::Loader::YAML

  # Load configuration from YAML files in one or more directories
  #
  # @overload yamldir(path)
  #   @param path [String] A directory path containing YAML files
  # @overload yamldir(paths)
  #   @param paths [Array<String>] A list of directory paths containing YAML files
  #
  # @return [Hash]
  def yamldir(input)
    dirs = Array(input)

    files = dirs.map do |dir|
      pattern = File.join(dir, '*.{yml,yaml}')
      Dir.glob(pattern)
    end.flatten

    rv = {}

    files.each do |file|
      contents = yamlfile(file)
      if contents.is_a? Hash
        rv = DeepMerge::deep_merge!(contents, rv, {:preserve_unmergables => false})
      end
    end

    rv
  end

  # Load configuration from a file
  #
  # @param file_path [String]
  #
  # @return [Hash]
  def yamlfile(file_path)
    ::YAML.load_file(file_path)
  end

  ConfigBuilder::Loader.register(:yaml, self)
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
vagrant-config_builder-1.3.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-1.2.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-1.1.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-1.0.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-1.0.0.rc1 lib/config_builder/loader/yaml.rb
vagrant-config_builder-0.15.1 lib/config_builder/loader/yaml.rb
vagrant-config_builder-0.15.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-0.14.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-0.13.0 lib/config_builder/loader/yaml.rb
vagrant-masonry-0.13.0 lib/config_builder/loader/yaml.rb
vagrant-config_builder-0.12.0 lib/config_builder/loader/yaml.rb