Sha256: 52976f71bbbba2a6371f465eaa4ecd763698fc052d079ec7db38909e621d1b7a

Contents?: true

Size: 1023 Bytes

Versions: 2

Compression:

Stored size: 1023 Bytes

Contents

require 'hiera'
require 'active_support'
require 'active_support/core_ext/hash/keys'

module Confidante
  class Configuration
    def initialize(opts = {})
      options = {
          overrides: {},
          scope: {},
      }.merge(opts.to_options)

      unless options[:hiera]
        options[:hiera] = Hiera.new(config: 'config/hiera.yaml')
      end

      @overrides = options[:overrides]
      @scope = options[:scope]
      @hiera = options[:hiera]
    end

    def for_overrides(overrides)
      Configuration.new(
          overrides: overrides,
          scope: @scope,
          hiera: @hiera)
    end

    def for_scope(scope)
      Configuration.new(
          overrides: @overrides,
          scope: scope,
          hiera: @hiera)
    end

    def method_missing(method, *args, &block)
      @hiera.lookup(
          method.to_s,
          nil,
          {'cwd' => Dir.pwd}
              .merge(@scope.stringify_keys)
              .merge({'overrides' => @overrides.to_h.stringify_keys}))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
confidante-0.7.0 lib/confidante/configuration.rb
confidante-0.6.0 lib/confidante/configuration.rb