Sha256: 60675e13fc2ac62708546356c40fee7a4370ad54fd4aee4d18d14cbaba78592e

Contents?: true

Size: 975 Bytes

Versions: 1

Compression:

Stored size: 975 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)
              .merge({overrides: @overrides}))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
confidante-0.2.0 lib/confidante/configuration.rb