class Confidante::Configuration

Public Class Methods

new(opts = {}) click to toggle source
# File lib/confidante/configuration.rb, line 9
def initialize(opts = {})
  options = {
      overrides: {},
      scope: {},
  }.merge(opts.to_options)

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

  unless options[:converters]
    options[:converters] =
        [Confidante::Converters::EvaluatingConverter.new]
  end

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

Public Instance Methods

for_overrides(overrides) click to toggle source
# File lib/confidante/configuration.rb, line 30
def for_overrides(overrides)
  Configuration.new(
      overrides: overrides,
      scope: @scope,
      hiera: @hiera,
      converters: @converters)
end
for_scope(scope) click to toggle source
# File lib/confidante/configuration.rb, line 38
def for_scope(scope)
  Configuration.new(
      overrides: @overrides,
      scope: scope,
      hiera: @hiera,
      converters: @converters)
end
method_missing(method, *args, &block) click to toggle source
# File lib/confidante/configuration.rb, line 46
def method_missing(method, *args, &block)
  scope =
      {'cwd' => Dir.pwd}
          .merge(@scope.stringify_keys)
          .merge({'overrides' => @overrides.to_h.stringify_keys})
  @converters.inject(@hiera.lookup(method.to_s, nil, scope)) do |v, c|
    c.convert(v)
  end
end