Sha256: ad97bed13bf50d063a89d9bd0d7f56e689c5eaf304cf307fb30c01caa2bfbf55

Contents?: true

Size: 816 Bytes

Versions: 3

Compression:

Stored size: 816 Bytes

Contents

require 'pathname'

class Nymphia::DSL::Context
  include Nymphia::DSL::RecursiveMethods

  attr_reader :result

  def self.eval(dsl_code, path)
    new(path) do
      eval(dsl_code, binding, path)
    end
  end

  def initialize(path, &block)
    @path = path

    @context = {
      identity_files: {},
      gateways: {},
      default_params: {},
      gateway_usage: {},
    }

    @result = {
      hosts: [],
    }

    instance_eval(&block)
  end

  private

  def identity_file(name, path)
    name = name.to_s
    path = path.to_s
    @context[:identity_files][name] = path
  end

  def load(load_file_path)
    absolute_load_file_path = Pathname.new(@path).dirname.join(load_file_path)
    dsl_code = File.read(absolute_load_file_path)

    instance_eval(dsl_code, absolute_load_file_path.to_s)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nymphia-0.1.2 lib/nymphia/dsl/context.rb
nymphia-0.1.1 lib/nymphia/dsl/context.rb
nymphia-0.1.0 lib/nymphia/dsl/context.rb