Sha256: 60cf6892a47fa411b2131616bd388f282f8b7a40b1ea59ee18294175bd17dfba

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

module CM
module Configuration
class Directory < Nucleon.plugin_class(:CM, :disk_configuration)

  #-----------------------------------------------------------------------------
  # Plugin interface

  def normalize(reload)
    super
    yield if block_given?
  end

  #-----------------------------------------------------------------------------
  # Checks

  def initialized?(options = {})
    ::File.directory?(path)
  end

  #-----------------------------------------------------------------------------
  # Property accessors / modifiers

  def output_file
    _get(:output_file, 'rendered.config.yaml')
  end

  def target_path
    ::File.join(path, output_file)
  end

  #-----------------------------------------------------------------------------
  # Operations

  def parse(wipe = true)
    super do
      import_directory(path)
    end
  end

  #---

  def save
    super do
      save_config(target_path, export)
    end
  end

  #-----------------------------------------------------------------------------
  # Utilities

  def import_directory(directory, force = true, deep_merge = true)
    success = true

    Nucleon.loaded_plugins(:nucleon, :translator).each do |provider, info|
      Dir.glob(::File.join(directory, '**', "*.#{provider}")).each do |file|
        logger.debug("Merging configurations from: #{file}")
        if config_data = parse_config(file)
          import(config_data, { :force => force, :basic => !deep_merge })
        else
          success = false
        end
      end
    end
    success
  end
  protected :import_directory
end
end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cm-0.1.8 lib/CM/configuration/directory.rb
cm-0.1.6 lib/CM/configuration/directory.rb
cm-0.1.4 lib/CM/configuration/directory.rb
cm-0.1.3 lib/CM/configuration/directory.rb